2 votes

Extraction du texte d'une requête asynchrone à l'aide de grequests

J'essaie d'extraire la partie texte de la demande que j'ai faite par le biais de la bibliothèque grequest mais je ne parviens pas à trouver comment faire.

Si nous utilisons la bibliothèque des demandes, je ferais

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

Maintenant, si j'utilise les grequests, je ne peux obtenir qu'une liste de codes de réponse et pas de texte.

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

Ce que j'ai essayé result = grequests.map(rs.text)

J'obtiens une erreur en utilisant le morceau de code ci-dessus AttributeError: 'generator' object has no attribute 'text'

La sortie que je souhaite obtenir est une liste de texte html où le code de réponse est 200, sinon la valeur doit être None. Comment puis-je y parvenir ?

Sortie souhaitée :

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

2voto

Tarun Lalwani Points 75641

Vous pouvez utiliser quelque chose comme ci-dessous

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)

Ce que vous obtenez en retour est un tableau de réponses après avoir appelé la carte. Ensuite, vous pouvez traiter ces données en utilisant la méthode native map fonction

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X