2011-10-24 35 views
11

Tôi đang sử dụng lxml để phân tích các tệp html được cung cấp bằng url.Thỏa thuận về https khi sử dụng lxml là gì?

Ví dụ:

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

Mã của tôi là làm việc tốt cho hầu hết các trường hợp, những người thân với http://. Tuy nhiên, tôi tìm thấy mọi url https://, lxml chỉ đơn giản là nhận được IOError. Có ai biết lý do không? Và có thể, làm thế nào để sửa vấn đề này?

BTW, tôi muốn chuyển sang lxml hơn chuyển sang BeautifulSoup do tôi đã có một chương trình hoàn thành nhanh chóng.

Trả lời

15

Tôi không biết điều gì đang xảy ra, nhưng tôi cũng gặp lỗi tương tự. HTTPS có lẽ không được hỗ trợ. Bạn có thể dễ dàng giải quyết vấn đề này với urllib2, mặc dù:

from lxml import html 
from urllib2 import urlopen 

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

'từ urllib.request import urlopen' for python3 –

5

Từ các tài liệu lxml:

lxml có thể phân tích cú pháp từ một tập tin địa phương, một URL HTTP hoặc FTP URL

Tôi không thấy HTTPS trong câu mà bất cứ nơi nào, vì vậy tôi giả nó không được hỗ trợ.

Cách giải quyết dễ dàng là truy xuất tệp bằng một số thư viện khác hỗ trợ HTTPS, chẳng hạn như urllib2 và chuyển tài liệu đã truy xuất dưới dạng chuỗi thành lxml.

Các vấn đề liên quan