Je suis complètement novice avec python quand il s'agit de récupérer des données Web en classe. Donc, excuses d'avance pour toute erreur grave. J'ai écrit un script pour analyser le texte à l'aide de la balise a
du site Web wikipedia. J'ai essayé d'écrire le code avec précision à partir de mon meilleur niveau, mais pour une raison quelconque, quand j'exécute le code, il jette une erreur. Le code et l'erreur que j'ai sont donnés ci-dessous pour votre aimable considération.Problème lors de l'exécution de mon crawler de classe
Le script:
import requests
from lxml.html import fromstring
class TextParser(object):
def __init__(self):
self.link = 'https://en.wikipedia.org/wiki/Main_Page'
self.storage = None
def fetch_url(self):
self.storage = requests.get(self.link).text
def get_text(self):
root = fromstring(self.storage)
for post in root.cssselect('a'):
print(post.text)
item = TextParser()
item.get_text()
L'erreur:
Traceback (most recent call last):
File "C:\Users\mth\AppData\Local\Programs\Python\Python35-32\testmatch.py", line 38, in <module>
item.get_text()
File "C:\Users\mth\AppData\Local\Programs\Python\Python35-32\testmatch.py", line 33, in get_text
root = fromstring(self.storage)
File "C:\Users\mth\AppData\Local\Programs\Python\Python35-32\lib\site-packages\lxml\html\__init__.py", line 875, in fromstring
is_full_html = _looks_like_full_html_unicode(html)
TypeError: expected string or bytes-like object
Merci monsieur Jonathan, ça marche maintenant. Va l'accepter comme une réponse bientôt. S'il vous plaît, n'ignorez pas le fait de donner des conseils sur la façon dont je peux exécuter le scraper sans appeler 'fetch_url()'. C'est ce que j'ai essayé en premier lieu. Merci et très obligé. – shayan
Eh bien, vous pouvez appeler fetch_url dans la fonction get_text. – Jonathan
Merci beaucoup. C'était ça. – shayan