Tôi đang cố gắng sử dụng BeautifulSoup để trích xuất nội dung từ một trang web (http://brooklynexposed.com/events/). Như một ví dụ về vấn đề tôi có thể chạy đoạn mã sau:BeautifulSoup không trích xuất tất cả html (tự động xóa nhiều html của một trang)
import urllib
import bs4 as BeautifulSoup
url = 'http://brooklynexposed.com/events/'
html = urllib.urlopen(url).read()
soup = BeautifulSoup.BeautifulSoup(html)
print soup.prettify().encode('utf-8')
Sản lượng dường như cắt đứt html như sau:
<li class="event">
9:00pm - 11:00pm
<br/>
<a href="http://brooklynexposed.com/events/entry/5432/2013-07-16">
Comedy Sh
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</body>
</html>
Nó được cắt ra khỏi danh sách với tên Comedy Hiện cùng với tất cả html đến sau cho đến khi các thẻ đóng cuối cùng. Đa số các html đang được tự động loại bỏ. Tôi đã nhận thấy những điều tương tự trên nhiều trang web, rằng nếu trang quá dài, BeautifulSoup không phân tích toàn bộ trang và chỉ cắt bớt văn bản. Có ai có một giải pháp cho điều này? Nếu BeautifulSoup không có khả năng xử lý các trang như vậy, có ai biết bất kỳ thư viện nào khác có chức năng tương tự như prettify() không?
Mã của bạn chỉ hoạt động tốt cho tôi. Nếu chuyển mạng bị gián đoạn tại điểm chính xác đó (vì vậy bạn chỉ nạp cho đến khi 'Comedy Sh') thì trình phân tích cú pháp HTML sẽ 'đóng' tất cả các thẻ vẫn mở và bạn thấy chính xác những gì bạn có. –
Đối với tôi, toàn bộ nội dung ở đó. Bắt đầu với mã của bạn để tạo đối tượng 'soup':' >>> len (unicode (soup)) 'trả về' 107578' Bạn đang sử dụng phiên bản BS nào? Tôi đang sử dụng 4.2.0. –
Thú vị, tôi đã sử dụng 4.2.1 với Python 2.7. Tuy nhiên khi tôi sử dụng 3,2 nó dường như làm việc. Nó không thể là một vấn đề thời gian chờ vì nếu tôi đã in HTML gốc thành một tệp thì tất cả văn bản xuất hiện. Bất kỳ ý tưởng khác về một giải pháp cho 2,7? Nếu không thì đã đến lúc bắt đầu chuyển mã của tôi. – user2540231