В чем заключаются сделки с https при использовании lxml?

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

Например:

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

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

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

Ответ 1

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

from lxml import html
from urllib2 import urlopen

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

Ответ 2

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

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

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

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