Những vấn đề thường gặp với newspaper3k và cách khắc phục
By hientd, at: 22:48 Ngày 17 tháng 9 năm 2023
Thời gian đọc ước tính: __READING_TIME__ minutes


Gói newspaper3k
là một công cụ mạnh mẽ để trích xuất và xử lý các bài báo tin tức từ web. Tuy nhiên, người dùng có thể gặp phải một số vấn đề. Dưới đây là hướng dẫn nhanh về các vấn đề và giải pháp phổ biến, kèm theo các đoạn mã.
1. Trích xuất bài viết không đầy đủ hoặc không chính xác
Vấn đề
newspaper3k
có thể bỏ sót thông tin quan trọng như tiêu đề, tác giả hoặc văn bản chính do cấu trúc HTML đa dạng.
Solution
Cấu hình tùy chỉnh
import newspaper
from newspaper import Config
config = Config()
config.memoize_articles = False
config.fetch_images = False
config.language = 'en'
article = newspaper.Article('https://example.com/article-url', config=config)
article.download()
article.parse()
print(article.title)
Phân tích cú pháp thủ công:
from bs4 import BeautifulSoup
import requests
url = 'https://example.com/article-url'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
title = soup.find('h1').text
print(title)
2. Xử lý nội dung động
Vấn đề
newspaper3k
có thể không thu thập được nội dung được tải động.
Giải pháp
Sử dụng Selenium: Điều này không đảm bảo rằng chúng ta có thể thu thập dữ liệu từ trang web
from selenium import webdriver
from newspaper import Article
url = 'https://www.wsj.com/livecoverage/trump-biden-rnc-election-2024?mod=hp_lead_pos7'
driver = webdriver.Chrome()
driver.get(url)
html = driver.page_source
driver.quit()
article = Article(url)
article.set_html(html)
article.parse()
print(article.text)
3. Hiệu suất chậm trên các tập dữ liệu lớn
Vấn đề
Xử lý số lượng lớn bài báo theo trình tự có thể chậm.
Giải pháp
Xử lý song song
import newspaper
from concurrent.futures import ThreadPoolExecutor
def fetch_article(url):
article = newspaper.Article(url)
article.download()
article.parse()
return article
urls = ['https://abcnews.go.com/US/trump-assassination-attempt-investigation-continues-new-details/story?id=112020474', 'https://abcnews.go.com/US/rust-armorer-hannah-gutierrez-seeks-new-trial-after/story?id=112012187']
with ThreadPoolExecutor(max_workers=10) as executor:
articles = list(executor.map(fetch_article, urls))
for article in articles:
print(article.title)
4. Hỗ trợ ngôn ngữ hạn chế
Vấn đề
Hỗ trợ hạn chế đối với các ngôn ngữ không phải tiếng Anh.
Giải pháp
Bộ phân tích cú pháp và mô hình NLP tùy chỉnh
import newspaper
from newspaper import Config
config = Config()
config.language = 'fr'
article = newspaper.Article('https://www.goodmorningamerica.com/news/story/former-nfl-star-terrell-davis-speaks-wrongful-handcuffing-112021507', config=config)
article.download()
article.parse()
print(article.text)
5. Vấn đề phụ thuộc và vấn đề cài đặt
Vấn đề
Xung đột phụ thuộc trong quá trình cài đặt.
Giải pháp
pip install virtualenv
virtualenv venv
source venv/bin/activate
pip install newspaper3k
Cài đặt phụ thuộc thủ công
pip install lxml Pillow pip install newspaper3k
6. Xử lý tường lửa trả phí và Captcha
Vấn đề
Tường lửa trả phí và Captcha có thể chặn việc thu thập dữ liệu.
Giải pháp
- API đăng ký: Sử dụng API chính thức cho người dùng đã đăng ký.
- Sự can thiệp của con người: Các phương pháp bán tự động cho Captcha. Tuy nhiên, điều này ngày càng trở nên tệ hơn, ví dụ: https://2captcha.com/
Kết luận
Mặc dù newspaper3k
mạnh mẽ, nhưng nó cũng có những thách thức. Những đoạn mã này cung cấp các giải pháp cho các vấn đề phổ biến, nâng cao độ tin cậy và hiệu quả của các dự án thu thập dữ liệu của bạn.
Bạn có thể tìm thấy thêm vấn đề ở đây https://github.com/codelucas/newspaper/issues