我正在尝试使用Requests模块编写一个简单的web爬虫程序,我想知道如何禁用它的-default- keep-alive特性。
我尝试使用:
s = requests.session()
s.config['keep_alive'] = False然而,我得到了一个错误,说明会话对象没有属性'config',我认为它是在新版本中更改的,但我似乎无法在官方文档中找到如何做到这一点。
事实是,当我在一个特定的网站上运行爬虫时,它最多只能得到五个页面,然后无限循环,所以我认为这与keep-alive功能有关!
PS:对于网络爬虫来说,Requests是一个好的模块吗?有没有更适合的东西?
谢谢!
发布于 2014-01-09 08:31:46
发布于 2014-01-09 07:50:17
我不确定,但您是否可以尝试在使用请求发送GET请求时将{"Connection":"close"}作为HTTP标头传递。这将在服务器返回响应时立即关闭连接。
>>> headers = {"Connection": "close"}
>>> r = requests.get('https://example.xcom', headers=headers)发布于 2015-07-02 07:25:28
正如@praveen建议的那样,我们应该使用HTTP/1.1 header Connection: close来通知服务器在响应完成后应该关闭连接。
下面是它在RFC 2616中的描述
HTTP/1.1为发送者定义了“关闭”连接选项,表示连接将在响应完成后关闭。例如,
连接:关闭
请求或响应头字段中的任何一个指示在当前请求/响应完成之后,连接不应被视为“持久”(8.1节)。
不支持持久连接的HTTP/1.1应用程序必须在每条消息中包含"close“连接选项。
https://stackoverflow.com/questions/21008953
复制相似问题