J'essaie d'exécuter ce programme. Ça fonctionnait bien jusqu'à aujourd'hui. Rien n'a été changé de mon côté dans le code.lxml etree parse failure (IOError)
import lxml.etree
import urlparse
import re
def parse_url(url):
return lxml.etree.parse(url, lxml.etree.HTMLParser())
urlivv = "http://finance.yahoo.com/q?s=IVV"
docivv = parse_url(urlivv)
Ceci est mon message d'erreur:
IOError: Error reading file 'http://finance.yahoo.com/q?s=IVV': failed to load external entity "http://finance.yahoo.com/q?s=IVV"
Il y avait un peu de documentation sur le site sur l'ajout StringIO
à l'argument (voir ci-dessous). Mais je trouve étrange que je n'ai jamais eu à le faire auparavant.
tree = etree.parse(StringIO(myString))
Modifier: Trace de pile plus complète.
>>> import lxml.etree
>>> tree = lxml.etree.parse('http://finance.yahoo.com/q?s=IVV', parser=lxml.etree.HTMLParser())
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
File "src\lxml\lxml.etree.pyx", line 3427, in lxml.etree.parse (src\lxml\lxml.etree.c:81100)
File "src\lxml\parser.pxi", line 1811, in lxml.etree._parseDocument (src\lxml\lxml.etree.c:117831)
File "src\lxml\parser.pxi", line 1837, in lxml.etree._parseDocumentFromURL (src\lxml\lxml.etree.c:118178)
File "src\lxml\parser.pxi", line 1741, in lxml.etree._parseDocFromFile (src\lxml\lxml.etree.c:117090)
File "src\lxml\parser.pxi", line 1138, in lxml.etree._BaseParser._parseDocFromFile (src\lxml\lxml.etree.c:111636)
File "src\lxml\parser.pxi", line 595, in lxml.etree._ParserContext._handleParseResultDoc (src\lxml\lxml.etree.c:105092)
File "src\lxml\parser.pxi", line 706, in lxml.etree._handleParseResult (src\lxml\lxml.etree.c:106800)
File "src\lxml\parser.pxi", line 633, in lxml.etree._raiseParseError (src\lxml\lxml.etree.c:105611)
OSError: Error reading file 'http://finance.yahoo.com/q?s=IVV': failed to load external entity "http://finance.yahoo.com/q?s=IVV"
Vous dites "Ça fonctionnait bien jusqu'à aujourd'hui. Rien n'a été changé de mon côté dans le code "mais vous téléchargez un fichier à partir d'un serveur web que vous ne contrôlez pas. Il semble très probable que quelque chose a changé du côté du serveur et que maintenant vous devez mettre à jour votre code pour faire face au changement. – bdesham
@bdesham Merci pour la réponse. Je suis encore plus jeune, alors s'il vous plaît, supportez-moi. Le problème semble apparaître sur plusieurs sites différents qui sont probablement contrôlés par différents serveurs Web (ou je suis ignorant ici). Comme il a échoué pour la même raison sur plusieurs URL, j'ai supposé que c'était un problème de code. Peu importe, je ne suis pas sûr de la façon dont je mettrais à jour mon code pour faire face au changement, alors n'hésitez pas à nous faire part de vos commentaires. – GC123
L'ajout de 'StringIO' a-t-il changé le résultat? Si vous essayez de charger cette URL Yahoo dans un navigateur Web sur le même ordinateur qui exécute le code Python, êtes-vous en mesure de voir la page Web? – bdesham