2012-03-12 48 views
9

Tôi đã viết một tập lệnh python xử lý một lượng lớn các trang web tải xuống HTML (120 nghìn trang). Tôi cần phải phân tích chúng và trích xuất một số thông tin từ đó. Tôi đã thử sử dụng BeautifulSoup, dễ dàng và trực quan, nhưng dường như chạy siêu chậm. Vì đây là cái gì đó sẽ phải chạy thường xuyên trên một máy yếu (trên amazon) tốc độ là quan trọng. có một trình phân tích cú pháp HTML/XML trong python sẽ hoạt động nhanh hơn nhiều so với BeautifulSoup không? hoặc tôi phải nghỉ mát để phân tích cú pháp regex ..Trình phân tích cú pháp HTML python HTML nhanh

+5

[Giữ pony đi ...] (http://stackoverflow.com/a/1732454/554546) –

+2

Tôi không có kinh nghiệm phân tích cú pháp HTML bằng Python, nhưng [ở đây] (http: //blog.ianbicking .org/2008/03/30/python-html-parser-performance /) là một số kết quả chuẩn mà bạn có thể thấy hữu ích. –

+8

[thất bại regex và HTML ==] (http://stackoverflow.com/a/1732454/554546) –

Trả lời

0

thử: ElementTree có thể nhanh hơn, nhưng tôi không chắc chắn.

xml.etree.ElementTree import ElementTree 
+0

Tôi cũng sẽ đề xuất điều này ... mặc dù, tôi không có bất kỳ dữ liệu nào để hỗ trợ tỷ lệ hiệu suất của điều này so với BeautifulSoup – inspectorG4dget

3

SAX-phong cách phân tích cú pháp có thể nhanh hơn so với những người dựa trên DOM. Mã của bạn được cung cấp một luồng các phần tử và bạn phải phỏng đoán (và có thể lưu trữ) các mối quan hệ của chúng; nhưng bạn chỉ cần duy trì nhiều trạng thái như được yêu cầu để có được dữ liệu bạn muốn. Ngược lại, các trình phân tích cú pháp kiểu DOM cần phải xây dựng một mô hình đối tượng điều hướng, cần có thời gian (và bộ nhớ) mà có lẽ bạn không cần phải chi tiêu.

Python có trình phân tích cú pháp như vậy cho HTML; nó được gọi là HTMLParser (html.parser bằng Python 3). Tùy thuộc vào mức độ khó nhận biết dữ liệu bạn muốn trích xuất, tuy nhiên, có thể rất khó để thành công trong việc sắp xếp lại phân tích cú pháp đó. Nếu bạn đã đăng một tập tin ví dụ và thông tin những dữ liệu bạn muốn trích xuất từ ​​nó, tôi có thể có thể mất một Whack.

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