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())