2010-03-24 66 views
17

Tôi mới sử dụng Python hoàn toàn và đang sử dụng Python 3.1 trên Windows (pywin). Tôi cần phải phân tích cú pháp một số HTML, về cơ bản giá trị bổ sung giữa các thẻ HTML cụ thể và bị nhầm lẫn với các tùy chọn của tôi và mọi thứ tôi tìm thấy đều phù hợp với Python 2.x. Tôi đã đọc các bài hát về Beautiful Soup, HTML5Lib và lxml, nhưng tôi không thể tìm ra cách cài đặt bất kỳ thứ gì trong số này trên Windows.Thư viện tốt nhất để phân tích cú pháp HTML bằng Python 3 và ví dụ?

Câu hỏi:

  1. phân tích cú pháp HTML gì bạn đề nghị?
  2. Làm cách nào để cài đặt? (Hãy nhẹ nhàng, tôi hoàn toàn mới với Python và nhớ tôi đang sử dụng Windows)
  3. Bạn có một ví dụ đơn giản về cách sử dụng thư viện được đề xuất để lấy mã HTML từ một URL cụ thể và trả về giá trị một cái gì đó như thế này:

    < div class = "foo" > < bảng > <tr> <td> foo </td > </tr > </table > < một class = "liên kết" href = '/ blahblah '> Liên kết </a > </div >

(nói chúng tôi muốn trở lại "/ blahblah")

Trả lời

5

Dò web trong Python 3 hiện được hỗ trợ rất kém; tất cả các thư viện phong nha chỉ làm việc với Python 2. Nếu bạn phải web cạo bằng Python, sử dụng Python 2.

Mặc dù Beautiful Soup được thường được đề xuất (mọi câu hỏi liên quan đến web cào với Python trong Stack Overflow thấy nó), nó không tốt cho Python 3 vì nó là cho Python 2; Tôi thậm chí không thể cài đặt nó vì mã cài đặt vẫn là Python 2.

Đối với các giải pháp đầy đủ và đơn giản để cài đặt Python 3, bạn có thể thử the library's HTML parser, mặc dù khá barebones, nó đi kèm với Python 3.

+1

Bất kỳ ý tưởng nào về cách sử dụng trình phân tích HTML được tích hợp sẵn để xem nội dung của các thẻ? – Teifion

+1

Súp đẹp có ghi tốt về tình trạng hiện tại của nó. http://www.crummy.com/software/BeautifulSoup/3.1-problems.html – dyork

4

BeautifulSoup, với phiên bản của nó 3.1.0.1 (January 2009) cũng làm việc với Python 3.x.

Tôi chưa có trải nghiệm trực tiếp với BeautifulSoup theo Py3k (mặc dù điều này sẽ sớm thay đổi ...).   Tôi chỉ đọc, tuy nhiên, Version 3.1.0 of Beautiful Soup does significantly worse on real-world HTML than its previous versions, vì vậy tôi có thể thử và đợi nếu có thể (ví dụ: ở lại với Python 2.6 lâu hơn một chút).

6

Nếu HTML của bạn được tạo đúng, bạn có nhiều tùy chọn, chẳng hạn như saxdom. Nếu nó không được định dạng tốt, bạn cần một trình phân tích cú pháp chịu lỗi như là Beautiful soup, element tidy hoặc lxml trình phân tích cú pháp HTML của. Không có trình phân tích cú pháp nào là hoàn hảo, khi được trình bày với nhiều HTML bị hỏng, đôi khi tôi phải thử nhiều hơn một. LxmlElementree sử dụng api chủ yếu tương thích có nhiều tiêu chuẩn hơn Beautiful soup.

Theo ý kiến ​​của tôi, lxml là mô-đun tốt nhất để làm việc với tài liệu xml, nhưng số ElementTree đi kèm với python vẫn còn khá tốt. Trước đây tôi đã sử dụng Beautiful soup để chuyển đổi HTML thành xml và xây dựng ElementTree để xử lý dữ liệu.

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