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