2011-10-24 4 views
11

Sto usando lxml per analizzare i file html dati URL.Qual è l'accordo su https quando si usa lxml?

Ad esempio:

link = 'https://abc.com/def' 
htmltree = lxml.html.parse(link) 

Il mio codice funziona bene per la maggior parte dei casi, quelli con http://. Tuttavia, ho trovato per ogni URL https://, lxml ottiene semplicemente un IOError. Qualcuno conosce la ragione? E possibilmente, come correggere questo problema?

BTW, voglio attenermi a lxml che passare a BeautifulSoup dato che ho già un programma veloce.

risposta

15

Non so cosa sta succedendo, ma ho gli stessi errori. HTTPS probabilmente non è supportato. Si può facilmente ovviare a questo con urllib2, però:

from lxml import html 
from urllib2 import urlopen 

html.parse(urlopen('https://duckduckgo.com')) 
+2

'da urllib.request urlopen' di importazione per python3 –

5

Dalla documentazione lxml:

lxml può analizzare da un file locale, un URL HTTP o un URL FTP

non vedo HTTPS in quella frase da nessuna parte, quindi presumo non è supportato

Una soluzione semplice sarebbe quella di recuperare il file utilizzando un'altra libreria che supporta HTTPS, ad esempio urllib2 e passare il documento recuperato come stringa a lxml.