使用grequests从异步请求中提取文本



我正试图从通过grequest库发出的请求中提取文本部分,但我不知道如何做到这一点。

如果我们使用请求库,我会进行

r = requests.get('www.google.com')
htmls.append(r.text)

现在,如果我使用grequests,我只能得到一个响应代码列表,而不能得到文本。

rs = (grequests.get(u) for u in urls)
result = grequests.map(rs)

我尝试过的result = grequests.map(rs.text)

我使用上面的代码AttributeError: 'generator' object has no attribute 'text'时出错

我想要的输出是一个html文本列表,其中响应代码为200,否则值应该为None。我怎样才能做到这一点?

期望输出:

response_code = [<Response [200]>,<Response [404]>,<Response [200]>]
htmls = ['html1', None, 'html2']

您可以使用下面的

rs = (grequests.get(u) for u in urls)
responses = grequests.map(rs)
text = list(map(lambda d : d.text if d else None, responses))
print(text)

调用映射后,您得到的是一个响应数组。然后您可以使用本机map函数处理这些数据

最新更新