La documentazione dice che posso:Posso fornire un URL a lxml.etree.parse su Python 3?
lxml può analizzare da un file locale, un URL HTTP o un URL FTP. Inoltre, rileva e legge automaticamente i file XML compressi con gzip (.gz).
(da http://lxml.de/parsing.html sotto "parser")
ma un rapido esperimento sembra implicare altrimenti:
Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 10:45:13) [MSC v.1600 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from lxml import etree
>>> parser = etree.HTMLParser()
>>> from urllib.request import urlopen
>>> with urlopen('https://pypi.python.org/simple') as f:
... tree = etree.parse(f, parser)
...
>>> tree2 = etree.parse('https://pypi.python.org/simple', parser)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "lxml.etree.pyx", line 3299, in lxml.etree.parse (src\lxml\lxml.etree.c:72655)
File "parser.pxi", line 1791, in lxml.etree._parseDocument (src\lxml\lxml.etree.c:106263)
File "parser.pxi", line 1817, in lxml.etree._parseDocumentFromURL (src\lxml\lxml.etree.c:106564)
File "parser.pxi", line 1721, in lxml.etree._parseDocFromFile (src\lxml\lxml.etree.c:105561)
File "parser.pxi", line 1122, in lxml.etree._BaseParser._parseDocFromFile (src\lxml\lxml.etree.c:100456)
File "parser.pxi", line 580, in lxml.etree._ParserContext._handleParseResultDoc (src\lxml\lxml.etree.c:94543)
File "parser.pxi", line 690, in lxml.etree._handleParseResult (src\lxml\lxml.etree.c:96003)
File "parser.pxi", line 618, in lxml.etree._raiseParseError (src\lxml\lxml.etree.c:95015)
OSError: Error reading file 'https://pypi.python.org/simple': failed to load external entity "https://pypi.python.org/simple"
>>>
posso utilizzare il metodo urlopen, ma la documentazione sembra implicare che il superamento di un L'URL è in qualche modo migliore. Inoltre, sono un po 'preoccupato di fare affidamento su lxml se la documentazione è inaccurata, soprattutto se comincio a dover fare qualcosa di più complesso.
Qual è il modo corretto di analizzare HTML con lxml, da un URL noto? E dove dovrei cercare di vederlo documentato?
Aggiornamento: ottengo lo stesso errore se uso un URL http
piuttosto che un https
uno.
funziona per un ** ** HTTP URL, non HTTPS. – isedev
No, anche l'http non funziona, lo stesso errore. Scusate, avrei dovuto dirlo (anche se non supportare HTTPS rende la possibilità di usare un URL un po 'insicuro :-() –
provate con 'www.google.com' per esempio, funziona per me. – isedev