Как обстоят дела с https при использовании lxml?

Я использую lxml для анализа html-файлов с заданными URL-адресами.

Например:

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

Мой код хорошо работает в большинстве случаев, с http://. Однако я обнаружил, что для каждого URL-адреса https:// lxml просто получает IOError. Кто-нибудь знает причину? И возможно, как исправить эту проблему?

Кстати, я хочу придерживаться lxml, а не переключаться на BeautifulSoup, учитывая, что у меня уже есть готовая программа.


person Flake    schedule 24.10.2011    source источник


Ответы (2)


Я не знаю, что происходит, но я получаю те же ошибки. HTTPS скорее всего не поддерживается. Однако вы можете легко обойти это с помощью urllib2:

from lxml import html
from urllib2 import urlopen

html.parse(urlopen('https://duckduckgo.com'))
person Fred Foo    schedule 24.10.2011
comment
from urllib.request import urlopen для python3 - person Aurélien Ooms; 29.07.2014

Из документации lxml:

lxml может анализировать локальный файл, URL-адрес HTTP или URL-адрес FTP.

Я нигде не вижу HTTPS в этом предложении, поэтому я предполагаю, что он не поддерживается.

Простым обходным решением было бы получить файл с помощью какой-либо другой библиотеки, которая поддерживает HTTPS, например urllib2, и передать полученный документ в виде строки в lxml.

person kindall    schedule 24.10.2011