AI摘要:本文介绍了Python爬虫中的session、cookie、代理、retrying模块和timeout参数的使用方法。首先,通过实例化一个session对象可以在登录后的页面进行抓包。其次,cookie和session的区别在于数据存放位置和安全性。然后,代理分为正向代理、反向代理、透明代理、匿名代理和高密代理,可以通过proxies参数设置代理ip。最后,retrying模块可以用来自动重试可能失败的程序段,timeout参数可以设置请求的超时时间。
一、实例化一个session对象:requests.session()
- 对访问登录后的页面抓包
- 确定登录请求的url,请求方法和所需参数
- 确定登录才能访问的url和请求方法
- 利用
requests.session()
完成代码
二、cookie池
cookie和session区别:
- cookie数据在客户端浏览器,sesseion数据在服务器
- cookie本地存放,有安全隐患
- session在一定时间保存在服务器,影响服务器内存,可以使用cookie
- 登录信息比较重要可以放session保存,其他信息放cookie
三、代理
(一)分类
- 正向代理:代理客户端
- 反向代理:代理服务器
- 透明代理:服务器检测到了使用代理ip,也知道真实ip
- 匿名代理:服务器检测到了使用了代理ip,但不知道真实ip
- 高密代理:服务器不知道使用了代理ip,也不知道真实ip
(二) proxies参数
proxies = {
"http":"", #域名+端口号
"https":""
}
response = requests.get(url, proxies = proxies)
代理ip无效,会自动使用本地的真实ip
import requests
url = 'https://ip.tool.chinaz.com'
headers = {
"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
}
proxies = {
'http':'101.200.235.69:9000'
}
res = requests.get(url, headers = headers, proxies = proxies)
print(res.content.decode())
四、retrying模块和timeout参数
(一) retrying模块
教程:https://zhuanlan.zhihu.com/p/222928201
retrying是一个python的重试包,可以用来自动重试一些可能运行失败的程序段,retrying提供一个装饰器函数retry,被装饰的函数就会在运行失败的情况下重新执行,默认只要一直报错就会不断重试。
import requests
from retrying import retry
@retry(stop_max_attempt_number = 3)
def test():
print('123')
url = 'https://www.baidu.com/'
response = requests.get(url)
print(repsonse.content.decode())
try:
test()
except:
print('完成了...')
123
123
123
完成了...
(二)timeout参数
强制要求请求在特定时间内返回请求,否则报错。
import requests
url = 'https://www.baidus.com/'
headers = {
"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
}
res = requests.get(url, headers = headers, timeout = 1)
print(res.content.decode())
评论 (0)