2011-10-24 4 views
11

私はlxmlを使ってURLを与えられたhtmlファイルを解析しています。例えばlxmlを使用している場合、httpsについてどうすればいいですか?

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

私のコードは、ほとんどの場合のためにうまく機能している、http://を持つもの。しかし、私はすべてのhttps://のURLを発見した、lxmlはIOErrorを取得します。誰もその理由を知っていますか?そしておそらく、この問題を解決する方法は?

私はすでに完成したプログラムを持っているので、BeautifulSoupに切り替えるよりlxmlに固執したいと思います。

答えて

15

私は何が起こっているのか分かりませんが、私は同じエラーが発生します。 HTTPSはおそらくサポートされていません。しかし、urllib2でこれを簡単に回避できます。

from lxml import html 
from urllib2 import urlopen 

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

'from urllib.request import urlopen' for python3 –

5

lxmlドキュメントから:

lxmlのは

、ローカルファイルからのHTTP URLまたはFTP URLを解析することができ、私はどこでもその文でHTTPSが表示されていないので、私は仮定サポートされていません。

簡単な回避策は、urllib2のようなHTTPSをサポートする他のライブラリを使用してファイルを取得し、取得したドキュメントを文字列としてlxmlに渡すことです。

関連する問題