cookies

我们在之前的爬⾍中其实已经使⽤过headers了。header为HTTP协议中的请求头。⼀般存放⼀些和请求内容⽆关的数据。有时也会存放⼀些安全验证信息。⽐如常⻅的User-Agent, token, cookie等。通过requests发送的请求, 我们可以把请求头信息放在headers中。也可以单独进⾏存放, 最终由requests⾃动帮我们拼接成完整的http请求头。

有些网站需要登录才能看到信息,比如我想用17k小说的书架信息,必须要登录才能看到这个信息。

图片

所以我们需要首先登陆,然后在登陆的时候要获取到登陆所需要的信息,如下图所示:

图片

点击登录的时候抓包就能抓到我们用到的账号和密码:

图片

然后我们就可以开始写了,注意,这里请求的url是这在这里的。

图片

然后在书架页,这些书籍信息隐藏在json中,需要找到json信息 ,然后解析。

图片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import requests
session = requests.session()
data = {
'loginName': '130`````72',
'password': 'c15`````' # 可以注册个账号尝试,这里需要构造字典
}
url = "https://passport.17k.com/ck/user/login" #这里是图3请求的网址
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36"
}
response = session.post(url,data=data,headers= headers)
# print(response.json())
# print(session.cookies)

#然后带着cookies去请求书架信息
resp = session.get('https://user.17k.com/ck/author/shelf?page=1&appKey=2406394919')
js = resp.json()
print(js)

title_list = js['data']
for title in title_list:
print(title['bookName'])

图片

除了上边这种,如果我们只想去爬取书架的信息,还有另外一种方式,把cookies放进请求头中去提取,也是可以请求成功的。

1
2
3
4
resp = requests.get('https://user.17k.com/ck/author/shelf?page=1&appKey=2406394919',headers={
"Cookie": "GUID=5afbb389-ec93-448a-8918-382c6733af53; BAIDU_SSP_lcr=https://www.baidu.com/link?url=mSGzSGQ-5b4P6Uxz86a8sCRmoatjrwwBL2W2RaONd23&wd=&eqid=e71441de0009cb4600000002621ee035; Hm_lvt_9793f42b498361373512340937deb2a0=1646190651; sajssdk_2015_cross_new_user=1; c_channel=0; c_csc=web; accessToken=avatarUrl%3Dhttps%253A%252F%252Fcdn.static.17k.com%252Fuser%252Favatar%252F06%252F06%252F56%252F93275606.jpg-88x88%253Fv%253D1646143965000%26id%3D93275606%26nickname%3D%25E6%25A3%25AE%25E6%259E%2597%25E9%2598%25B2%25E7%2581%25AB%25E5%2593%25A5%26e%3D1661742852%26s%3Da0f42f1444764b57; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2293275606%22%2C%22%24device_id%22%3A%2217f489be8d57ed-01ef372a9310b1-a3e3164-2073600-17f489be8d6d11%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E8%87%AA%E7%84%B6%E6%90%9C%E7%B4%A2%E6%B5%81%E9%87%8F%22%2C%22%24latest_referrer%22%3A%22https%3A%2F%2Fwww.baidu.com%2Flink%22%2C%22%24latest_referrer_host%22%3A%22www.baidu.com%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC%22%7D%2C%22first_id%22%3A%225afbb389-ec93-448a-8918-382c6733af53%22%7D; Hm_lpvt_9793f42b498361373512340937deb2a0=1646191565"
})
print(resp.json())

图片

也能解析成功。

图片

这就是本期的内容。