2011-06-27 26 views
15

Tôi muốn thực hiện một số thao tác cạo màn hình bằng Python 2.7 và tôi không có ngữ cảnh cho sự khác biệt giữa HTMLParser, SGMLParser hoặc Súp đẹp.Phân tích cú pháp HTML bằng Python 2.7 - HTMLParser, SGMLParser hoặc Beautiful Soup?

Tất cả những điều này có đang cố gắng giải quyết cùng một vấn đề hoặc chúng tồn tại vì các lý do khác nhau không? Cái nào đơn giản nhất, mạnh nhất, và cái nào (nếu có) là lựa chọn mặc định?

Ngoài ra, vui lòng cho tôi biết nếu tôi đã bỏ qua một tùy chọn quan trọng.

Chỉnh sửa: Tôi nên đề cập rằng tôi không có kinh nghiệm đặc biệt trong phân tích cú pháp HTML và tôi đặc biệt quan tâm đến điều này sẽ giúp tôi di chuyển nhanh nhất, với mục tiêu phân tích HTML trên một trang web cụ thể.

+1

Bắt một hang sử dụng xpath với lxml với một vài ví dụ tốt sẽ là một cách tiếp cận tốt IMO. Hãy thử các cách sau: http://lxml.de/tutorial.html & http://www.techchorus.net/web-scraping-lxml – Medorator

Trả lời

13

Tôi đang sử dụng và muốn giới thiệu lxmlpyquery để phân tích cú pháp HTML. Tôi đã phải viết một cào web bot một vài tháng trước đây và của tất cả các lựa chọn thay thế phổ biến tôi đã cố gắng, bao gồm HTMLParserBeautifulSoup, tôi đã đi với lxml và đường cú pháp của pyquery. Tuy nhiên, tôi chưa thử sử dụng SGMLParser.

Đối với những gì tôi đã thấy, lxml ít nhiều là thư viện giàu tính năng nhất và lõi C cơ bản của nó khá hiệu quả khi so sánh với các lựa chọn thay thế của nó. Đối với pyquery, tôi thực sự thích cú pháp lấy cảm hứng từ jQuery giúp điều hướng DOM thú vị hơn.

Dưới đây là một số tài nguyên mà bạn có thể tìm thấy hữu ích trong trường hợp bạn quyết định để cho nó một thử:

Vâng, đó là 2c của tôi :) Tôi hi vọng cái này giúp được.

+0

Bạn sẽ so sánh 'lxml' và' HTMLParser' như thế nào về tính dễ sử dụng mà không cần quan tâm đến hiệu suất? –

+0

Vâng, tôi đoán điều này sẽ phụ thuộc vào trải nghiệm và sở thích của bạn, nhưng cá nhân tôi thấy phương pháp tiếp cận hướng tài liệu của lxml trực quan hơn mô hình dựa trên luồng của HTMLParser. Vì vậy, tôi thấy lxml dễ sử dụng hơn, nhưng tôi có thể không hoàn toàn công bằng vì sau khi so sánh ban đầu của tôi về các thư viện khác nhau một vài tháng trước, tôi đã sử dụng lxml chỉ. – tishon

-4

Vâng, phần mềm giống như xe hơi .... hương vị khác nhau về tất cả làm ổ đĩa!

Đi với BeautifulSoup (4).

+5

Phần mềm giống như ô tô. . . và nó là tốt để biết nếu bạn đang ngồi sau tay lái của một chiếc sedan, một minivan, một chiếc xe thể thao, hoặc một bánh xe mười tám. Có, tất cả họ đều lái xe, nhưng họ có mục tiêu khác nhau, và nên được điều khiển cho phù hợp. –

6

BeautifulSoup nói riêng là dành cho HTML bẩn như được tìm thấy trong tự nhiên. Nó sẽ phân tích bất kỳ điều cũ, nhưng là chậm.

Lựa chọn rất phổ biến trong những ngày này là lxml.html, nhanh và có thể sử dụng BeautifulSoup nếu cần.

1

Hãy xem Scrapy. Nó là một khuôn khổ python đặc biệt để tháo dỡ. Nó làm cho nó rất dễ dàng để trích xuất thông tin bằng cách sử dụng XPath cho phần tử. Nó cũng có một số khả năng rất thú vị như xác định các mô hình cho dữ liệu được cạo (để có thể xuất nó ở các định dạng khác nhau), xác thực và đệ quy theo các liên kết.

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