CodeGym /Các khóa học /Python SELF VI /Trích xuất văn bản và thuộc tính từ các phần tử HTML bằng...

Trích xuất văn bản và thuộc tính từ các phần tử HTML bằng phương pháp của BeautifulSoup

Python SELF VI
Mức độ , Bài học
Có sẵn

1. Giới thiệu về các phương pháp trích xuất văn bản

Hôm nay chúng ta sẽ học cách trích xuất dữ liệu văn bản quý giá và các thuộc tính từ phần tử HTML. Bỏ qua cái rựa đi, bởi vì với BeautifulSoup, làm việc với mã HTML giống như bước đi trong một khu vườn mùa thu, nơi mà táo chỉ đợi để được hái. Sẵn sàng để gặt hái thành quả học tập của bạn chưa? Bắt đầu nào!

Các phương pháp trích xuất văn bản từ phần tử HTML đứng đầu danh sách của chúng ta. Trước khi bắt đầu trích xuất văn bản, hãy tải trang web trước.

Python

import requests
from bs4 import BeautifulSoup

# Tải mã HTML của trang
url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

Bây giờ chúng ta có đối tượng soup, chứa cấu trúc cây của tài liệu HTML. Hãy trích xuất văn bản từ một phần tử thẻ nào đó, ví dụ như tiêu đề.

Phương pháp .textget_text()

Thuộc tính .text và phương pháp tương tự - get_text() cho phép lấy nội dung văn bản của phần tử (và tất cả các phần tử con của nó).

Python

# Trích xuất văn bản từ tiêu đề h1 đầu tiên được tìm thấy
h1_tag = soup.find('h1')
print(h1_tag.text) # hoặc h1_tag.get_text()

Hãy thử tự mình làm: tìm các phần tử khác bằng các phương pháp tìm kiếm mà chúng ta đã học trong các bài giảng trước, và trích xuất văn bản từ chúng. Bạn sẽ ngạc nhiên với lượng thông tin bạn có thể lấy được!

2. Trích xuất giá trị thuộc tính

Văn bản thì hay ho, nhưng đôi khi dữ liệu quan trọng lại được giấu trong thuộc tính, giống như hộ chiếu trong túi. Hãy tưởng tượng bạn cần biết địa chỉ của một liên kết hoặc lấy URL của một hình ảnh (và đừng hỏi tại sao cần cái này; có thể là bạn muốn thu thập bộ sưu tập hình ảnh mèo chẳng hạn).

Trích xuất giá trị thuộc tính

Giả sử chúng ta có một phần tử liên kết <a href="https://example.com">Example</a>. Làm thế nào để lấy giá trị từ href? Rất đơn giản.

Python

# Trích xuất liên kết
a_tag = soup.find('a')
link = a_tag['href']
print("Liên kết:", link)

Mã này trích xuất giá trị thuộc tính href. Bất kỳ thuộc tính hữu ích nào khác, bạn cũng có thể lấy nó tương tự.

Thử trích xuất hình ảnh

Trích xuất URL của một hình ảnh có thể cũng đơn giản như vậy. Hãy xem xét trường hợp với <img src="image.jpg" alt="Mèo">.

Python

# Trích xuất URL hình ảnh
img_tag = soup.find('img')
image_url = img_tag['src']
print("URL hình ảnh:", image_url)

Vẻ đẹp của BeautifulSoup là nó cho phép dễ dàng tìm kiếm và trích xuất dữ liệu, mà không cần quan tâm quá nhiều về cấu trúc HTML hoạt động như thế nào.

3. Ví dụ về trích xuất văn bản và thuộc tính

Đến lúc chuyển sang ví dụ thực tế. Hãy xem xét một bài toán phức tạp hơn một chút: trích xuất tất cả các liên kết trên trang, kèm theo văn bản bên trong các thẻ <a>.

Ví dụ: trích xuất tất cả liên kết với văn bản

Python

# Tìm tất cả các thẻ a
a_tags = soup.find_all('a')

# In ra liên kết và văn bản
for a_tag in a_tags:
 link = a_tag['href']
 text = a_tag.get_text()
 print(f"Văn bản: {text}, Liên kết: {link}")

Như bạn thấy, phương pháp find_all dễ dàng tìm thấy tất cả các phần tử đáp ứng tiêu chí tìm kiếm, và vòng lặp for cho phép duyệt qua từng phần tử.

4. Xử lý lỗi

Đừng quên xử lý lỗi. Đôi khi cấu trúc HTML có thể không như bạn mong đợi, hoặc phần tử không có thuộc tính như bạn nghĩ. Hãy làm cho mã của bạn không bị lỗi trong những trường hợp như vậy.

Python

# Ví dụ xử lý lỗi khi trích xuất thuộc tính
try:
 link = a_tag['href']
except KeyError:
 link = None
 print("Thuộc tính href không tìm thấy!")

Điều này sẽ làm cho script ổn định hơn và nó sẽ không bị ngừng hoạt động vì một lỗi nhỏ.

5. Ứng dụng thực tế

Vào năm 2019, một doanh nhân Nga đã chia sẻ câu chuyện về cách công ty của anh ta, chuyên về phân tích dữ liệu, đạt doanh thu 20 triệu rúp mỗi năm. Anh ta nhấn mạnh rằng việc thu thập thông tin tự động không giới hạn sự cạnh tranh, mà ngược lại, giúp các doanh nghiệp thích nghi với thị trường.

Ví dụ, một khách hàng đã yêu cầu tạo một công cụ để thu thập hàng tồn kho hàng ngày từ trang web nhà cung cấp, điều này cho phép cập nhật nhanh chóng danh mục và giá cả trong cửa hàng trực tuyến của chính họ. Doanh nhân cũng nhấn mạnh rằng, mặc dù một số trang web cố gắng làm phức tạp quá trình phân tích, công nghệ hiện đại vẫn cho phép vượt qua những trở ngại đó, cung cấp cho doanh nghiệp dữ liệu cần thiết để đưa ra quyết định chiến lược.

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION