我正试图从通过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
函数处理这些数据