我正在尝试使用Requests模块编写一个简单的Web爬虫程序,我想知道如何禁用它的-default- keep-alive feauture。
我尝试使用:
s = requests.session()
s.config['keep_alive'] = False
但是,我收到一条错误,指出会话对象没有属性'config',我认为它已经改变了新版本,但我似乎无法在官方文档中找到如何做到这一点。
事实是,当我在特定网站上运行爬虫时,它最多只能获得五个页面,然后无限循环,所以我认为它与保持活动功能有关!
PS:是请求网络爬虫的好模块吗?还有更适应的东西吗?
谢谢!
答案 0 :(得分:15)
答案 1 :(得分:6)
我不确定但您可以尝试在使用请求发送GET请求时将{“Connection”:“close”}作为HTTP标头传递。这将在服务器返回响应后立即关闭连接。
>>> headers = {"Connection": "close"}
>>> r = requests.get('https://example.xcom', headers=headers)
答案 2 :(得分:3)
正如@praveen建议我们使用HTTP/1.1
标题Connection: close
来通知服务器在完成响应后应该关闭连接。
以下是RFC 2616中描述的内容:
HTTP / 1.1定义"关闭"连接选项,发送方在完成响应后发出连接将被关闭的信号。例如,
请求或响应头字段中的Connection: close
表示连接不应被视为“持久性”#39; (当前请求/响应完成后,第8.1节)。
不支持持久连接的HTTP / 1.1应用程序必须包含"关闭"每条消息中的连接选项。