Python Requests中保持单一会话循环提交不同Payload的问题
解决Requests会话复用问题
你现在的问题是每次循环都新建独立请求,没法复用会话的连接池、Cookie维持等优势。只需要把会话对象的创建移到循环外面,整个迭代过程用同一个会话发送请求即可。
修改后的代码:
import requests from bs4 import BeautifulSoup # 提前创建单次会话,放在循环外部 session = requests.Session() # 根据循环条件初始化i的值 i = 2 while i < 1570: payload = { 'number1': i, } # 使用会话对象发送POST请求 r = session.post(url, data=payload) soup = BeautifulSoup(r.content, "lxml") # 处理完请求后再递增i i += 1
关键说明
requests.Session()创建的会话会自动维护Cookie,并且复用底层TCP连接,避免每次请求都重新建立连接,大幅提升请求效率- 会话对象的
post、get等方法用法和直接调用requests.post完全一致,不需要大幅修改原有代码 - 把会话创建放在循环外,就能保证整个迭代过程用的是同一个活跃会话
内容的提问来源于stack exchange,提问作者TheAtef
相关产品推荐
相关产品推荐

