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" 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)
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())
|
也能解析成功。
这就是本期的内容。