Cookie:
类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息
cookie和爬虫关系
手动破解**(将cookie粘贴到header中,但是由于cookie是动态变化的,所以在以后运行中要时常修改,所以不推荐)
- header = {
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.5211 SLBChan/25"
- ,"cookie":'xq_a_token=f257b9741beeb7f05f6296e58041e56c810c8ef8; xqat=f257b9741beeb7f05f6296e58041e56c810c8ef8;xq_r_token=2e05f6c50e
- }
-
-
自动破解
Session可以向requests一样调用get,post发起指令,只不过如果在使用它的时候,发起请求的过程中如果存在cookie,cookie就会被自动存储在Session的对象中,那么下次再出现的时候就会自动发起,则就相当于自动携带当前cookie
Session在调用时至少被调用两次:
第一次是使用Session是为了将cookie捕获且储存在Session中
第二次是用携带者cookie的Session发起get,post请求
- import requests
- header = {
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.5211 SLBChan/25"
- }
- #关于url_1和url_2后面说明
- url_1='https://xueqiu.com/'
- url_2='https://stock.xueqiu.com/v5/stock/batch/quote.json?symbol=SH000001,SZ399001,SZ399006,SH000688,HKHSI,HKHSCEI,HKHSCCI,.DJI,.IXIC,.INX'
-
- #Session创建对象
- session=requests.Session()
- #将cookie存储在Session中
- session.get(url=url_1,headers=header)
- #用存储cookie后的Session进行get请求
- data=session.get(url=url_2,headers=header).text
- fp=open('test_1.html',mode="w+",encoding='utf-8')
- fp.write(data)
- fp.close()
-
实例网站:https://xueqiu.com/
1.先进行页面的分析:
先进行常规化运行:
1.先获取
2.登录账号和密码
3.看书架网站
4.书架的网址
5.代码
- import requests
- from lxml import etree
-
- #会话
- session=requests.session()
-
- data={
- 'loginName': '17325326950',
- 'password': '17325326950xiao',
- }
-
- #1.登陆
- 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/95.0.4638.69 Safari/537.36'
- }
-
- ress=session.post(url=url,data=data,headers=headers)
- ress1=ress.text
- #print(ress1)
-
- #print(ress.cookies) #看cookie
-
- #2.拿书架上的数据
- #刚才的哪个session中有cookie
- #书架的网址
- url2='https://user.17k.com/ck/author/shelf?page=1&appKey=2406394919'
- resp=session.get(url=url2)
-
- print(resp.json())
-