Selenium và BeautifulSoup
Kết hợp Selenium với BeautifulSoup cung cấp một bộ công cụ mạnh mẽ cho web scraping. Selenium xử lí tự động hóa
trình duyệt web, cho phép bạn tương tác với các trang web chính như một con người làm. Mặt khác, BeautifulSoup
là một thư viện Python thiết kế để duyệt các tài liệu HTML và XML dễ dàng và trực quan. Bằng cách duyệt HTML,
BeautifulSoup cho phép bạn rút các đoạn thông tin cụ thể, điều hướng tài liệu, và điều chỉnh nó. Nó là đặc biệt
hữu dụng cho web scraping vì nó có thể nhanh chóng rút các lượng lớn dữ liệu từ các web pages phức tạp.
Trong khi Selenium có thể giành bất cứ trang nào và tương tác với nó động, nó đôi khi có thể quá đà nếu bạn chỉ
muốn duyệt nội dung tĩnh hay rút dữ liệu cụ thể sau khi page ban đầu load. BeautifulSoup là một thư viện duyệt
thành thạo trong nhanh chóng rút dữ liệu từ nội dung HTML cái Selenium giành. Kết hợp này đặc biệt hiệu quả cho
scraping các sites cái sử dụng Javascript để trình bày nội dung, như Hacker News, nơi dữ liệu thực có thể chỉ
được truy cập sau khi thực thi Javascript.
Sau đây là làm cách nào bạn có thể sử dụng cả Selenium và BeautifulSoup để scrape tất cả news titles từ
Hacker News website:
from selenium import webdriver
from bs4 import BeautifulSoupDRIVER_PATH = ‘/path/to/chromedriver’
# Set up Chrome WebDriver
driver = webdriver.Chrome(executable_path=DRIVER_PATH)# Navigate to Hacker News
driver.get(“https://news.ycombinator.com/”)# Retrieve the page source
html = driver.page_source# Close the driver
driver.quit()# Parse the HTML with BeautifulSoup
soup = BeautifulSoup(html, ‘html.parser’)# Find all ‘tr’ elements with class ‘athing’ which contain the news titles
titles = soup.find_all(‘tr’, class_=’athing’)# Loop through each title and print it
for title in titles:# Find the <a> tag within the ‘titleline’ span inside a ‘td’ with class ‘title’
title_link = title.find(‘td’, class_=’title’).find(‘span’, class_=’titleline’).find(‘a’)
title_text = title_link.get_text() # Extract the text of the title
print(title_text)
Trong script này, chúng ta thực hiện các bước sau:
1. Thiết lập Selenium WebDriver: Khởi tạo Chrome WebDriver, cái cho phép cho tương tác trình duyệt.
2. Điều hướng tới Hacker News: Lệnh Chrome load trang chủ Hacker News
3. Giành mã nguồn trang; Sau khi page load, Selenium bắt toàn bộ mã nguồn HTML của trang.
4. Đóng WebDriver: Đóng WebDriver sau sử dụng của nó là cơ bản để giải phóng tài nguyên hệ thống.
5. Duyệt HTML với BeautifulSoup: HTML giành được sau đó được duyệt sử dụng BeautifulSoup, tạo một soup
object có cấu trúc cho dễ dàng điều hướng HTML.
6. Tìm tất cả các titles: Code tìm kiếm cho tất cả các phần tử tr với class athing, mỗi cái trình bày một
vật news
7. Rút và in ra titles: Bên trong mỗi của các phần tử tr này, script định vị th với class title, điều hướng tới
nested span với class titleline, và tìm ra a tag bên trong nó. Text của a tag này chứa news article’s title, cái
sau đó được in ra.
Script này sử dụng hiệu quả cả Selenium và BeautifulSoup để điều hướng và rút dữ liệu có cấu trúc từ website
load động như Hacker News, thể hiện sức mạnh của kết hợp các công cụ này cho các nhiệm vụ web scraping mạnh mẽ.
Thích BeautifulSoup? Check guide thú vị của chúng tôi improving scraping speed performance with BS4.