Python-Requests(> = 1. *):如何禁用keep-alive?

时间:2014-01-08 23:42:52

标签: python web web-crawler python-requests

我正在尝试使用Requests模块编写一个简单的Web爬虫程序,我想知道如何禁用它的-default- keep-alive feauture。

我尝试使用:

s = requests.session()
s.config['keep_alive'] = False

但是,我收到一条错误,指出会话对象没有属性'config',我认为它已经改变了新版本,但我似乎无法在官方文档中找到如何做到这一点。

事实是,当我在特定网站上运行爬虫时,它最多只能获得五个页面,然后无限循环,所以我认为它与保持活动功能有关!

PS:是请求网络爬虫的好模块吗?还有更适应的东西吗?

谢谢!

3 个答案:

答案 0 :(得分:15)

这有效

s = requests.session()
s.keep_alive = False

Answered in the comments of a similar question.

答案 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应用程序必须包含"关闭"每条消息中的连接选项。