一周目,爬虫,四日
爬虫模拟登录
1 cookie与session
使用领域:随着时代的发展,越来越多的网址需要保存用户的状态,列如保存会员与非会员用户的状态,因此专门用于解决http协议无状态的特点
1.1 cookie
保存在游览器上的键值对数据
优点 游览器自动保存数据,不需要反复获取密码,会自动携带
缺点 cookie的信息是可以被直观看见的
1.2 session
保存在服务器上的相关用户数据
优点 用户登录后会返回一个或几个随机字符给客户端,客户端保存后可以携带访问,安全性高
缺点 字符串类似于令牌,其他计算机携带也可以登录该用户
2 python模拟cookie登录操作
import requests res = requests.post('http://www.aa7a.cn/user.php', data={ "username": "616564099@qq.com", "password": "lqz123", "captcha": "kuyb", "remember": 1, "ref": "http://www.aa7a.cn/user.php?act=logout", "act": "act_login" } # data参数携带请求体数据 ) # 获取cookie数据 # print(res.cookies.get_dict()) user_cookie = res.cookies.get_dict() """ 用户名或密码错误的情况下返回的cookie数据 {'ECS[visit_times]': '1', 'ECS_ID': '69763617dc5ff442c6ab713eb37a470886669dc2'} 用户名和密码都正确的情况下返回的cookie数据 { 'ECS[password]': '4a5e6ce9d1aba9de9b31abdf303bbdc2', 'ECS[user_id]': '61399', 'ECS[username]': '616564099%40qq.com', 'ECS[visit_times]': '1', 'ECS_ID': 'e18e2394d710197019304ce69b184d8969be0fbd' } """ # 使用cookie访问网站 res1 = requests.get('http://www.aa7a.cn/', cookies=user_cookie ) if '616564099@qq.com' in res1.text: print('登录身份访问') else: print('cookie存在错误')
3 获取大数据
stream参数:逐条获取数据写入文件,防止全部存放内存,导致溢出重启等情况
方法
import requests
response=requests.get('https://www.shiping.com/xxx.mp4',
stream=True)
with open('b.mp4','wb') as f:
for line in response.iter_content(): # 一行一行读取内容
f.write(line)
4 jason格式
jason格式特征引号为双引号,前后端的数据交互一般用的也是双引号
import requests
res = requests.get('https://api.bilibili.com/x/player/pagelist?bvid=BV1QE41147hU&jsonp=jsonp')
print(res.json())
# 可以直接将json格式字符串转换成python对应的数据类型
5 ip代持池
有很多网站针对客户端的IP地址也存在防爬措施
eg:比如一分钟之内同一个IP地址访问该网站的次数不能超过30次超过了就封禁该IP地址
IP代理池里面有很多IP地址每次访问从中随机挑选一个
import requests
proxies={
'http':'114.99.223.131:8888',
'http':'119.7.145.201:8080',
'http':'175.155.142.28:8080',
}
respone=requests.get('https://www.12306.cn',
proxies=proxies)
6 cookie代理池
有很多网站针对客户端的cookie也存在防爬措施
eg:比如一分钟之内同一个cookie访问该网站的次数不能超过30次超过了就封禁该cookie
cookie代理池里面有很多cookie每次访问从中随机挑选一个
respone=requests.get('https://www.12306.cn',
cookies={})
