这是我第一次尝试使用文档和示例代码级别不理想的库,所以请耐心等待。我对 Requests 库有一点经验,但我需要每秒向特定地址发送单独的请求:
- 无需等待第一个请求完成,在各个响应进入时对其进行处理
- 响应的内容需要单独解析
- 同时限制连接总数
我无法弄清楚如何同时满足这些条件。grequests.map()
会给我我想要的回复内容,但只有在他们全部完成后才能分批。grequests.send()
似乎只返回一个不包含网页 html 文本的响应对象。(我可能错了grequests.send()
,但我还没有找到从该对象中提取内容的示例)
这是我到目前为止的代码:
import grequests
from time import sleep
def print_res(res, **kwargs):
print res
print kwargs
headers = {'User-Agent':'Python'}
req = grequests.get('http://stackoverflow.com', headers=headers, hooks=dict(response=print_res), verify=False)
for i in range(3):
job = grequests.send(req, grequests.Pool(10))
sleep(1)
我得到的回应:
1
<Response [200]>
{'verify': False, 'cert': None, 'proxies': {'http': 'http://127.0.0.1:8888', 'ht
tps': 'https://127.0.0.1:8888'}, 'stream': False, 'timeout': None}
2
<Response [200]>
{'verify': False, 'cert': None, 'proxies': {'http': 'http://127.0.0.1:8888', 'ht
tps': 'https://127.0.0.1:8888'}, 'stream': False, 'timeout': None}
3
<Response [200]>
{'verify': False, 'cert': None, 'proxies': {'http': 'http://127.0.0.1:8888', 'ht
tps': 'https://127.0.0.1:8888'}, 'stream': False, 'timeout': None}
我尝试使用req.content
, 和访问 html 响应job.content
,但都不起作用。