Какое значение имеет https при использовании lxml? - PullRequest
12 голосов
/ 25 октября 2011

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

Например:

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

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

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

Ответы [ 2 ]

18 голосов
/ 25 октября 2011

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

from lxml import html
from urllib2 import urlopen

html.parse(urlopen('https://duckduckgo.com'))
6 голосов
/ 25 октября 2011

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

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

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

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

...