2009-05-24 29 views
14

Tôi cần duyệt qua cây DOM của tài liệu HTML được phân tích cú pháp.Cách phân tích cú pháp HTML không đúng định dạng trong python

Tôi đang sử dụng uTidyLib trước khi phân tích các chuỗi với lxml

a = tidy.parseString (html_code, options) dom = etree.fromstring (str (a))

đôi khi tôi nhận được một lỗi , có vẻ như tidylib không thể sửa chữa html không đúng định dạng.

làm cách nào tôi có thể phân tích cú pháp mọi tệp HTML mà không gặp lỗi (chỉ phân tích cú pháp một số phần của tệp không thể sửa được)?

Trả lời

24

Beautiful Soup làm một công việc tốt với không hợp lệ/tấm HTML

>>> from BeautifulSoup import BeautifulSoup 
>>> soup = BeautifulSoup("<[email protected])($*><body><table <tr><td>hi</tr></td></body><html") 
>>> print soup.prettify() 
<htm> 
<body> 
    <table> 
    <tr> 
    <td> 
    hi 
    </td> 
    </tr> 
    </table> 
</body> 
</htm> 
13

Vì bạn đang sử dụng lxml, bạn đã thử lxml'sElementSoup module?

Nếu ElementSoup không thể sửa chữa HTML thì có thể bạn sẽ cần phải áp dụng bộ lọc của riêng mình trước tiên dựa trên các quan sát của riêng bạn về cách dữ liệu bị hỏng.

+0

+1, ElementSoup là giải pháp thay thế tuyệt vời tại đây. –

+0

Liên kết đã bị hỏng; chỉnh sửa chúng. Hy vọng rằng các vị trí mới chứa cùng một nội dung mà ban đầu bạn chỉ đến. – tripleee

+0

Nếu bạn chưa cài đặt món súp tuyệt đẹp, bạn có thể cần nó cho Element Soup. Chỉ cần làm 'pip install beautifulsoup' – BobTuckerman

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