CodeGym /Khóa học Java /Python SELF VI /Phân tích HTML với BeautifulSoup

Phân tích HTML với BeautifulSoup

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

1. Tải về và phân tích tài liệu HTML

Tóm tắt chức năng

Thư viện requests — là "người đưa thư" của chúng ta, người đi lấy mã HTML từ các trang web. Nó gửi các yêu cầu HTTP và mang về các trang, như một người giao pizza, chỉ là không có "Margherita" và hộp đựng.

BeautifulSoup, mặt khác, là "đầu bếp" của chúng ta dễ dàng phân tách HTML đã nhận được thành các thành phần (các thẻ, thuộc tính và nội dung), để chúng ta có thể sử dụng chúng. Nó giúp chúng ta tìm kiếm các yếu tố cần thiết và lưu trữ tất cả thông tin quan trọng.

Sử dụng thư viện requests

Bây giờ chúng ta đã sẵn sàng để thực hiện yêu cầu HTTP đầu tiên và lấy mã HTML của trang. Hãy thử tải trang example.com để thực hành. Trang web này là "khủng long" của Internet và hoàn hảo cho người mới bắt đầu.

Python

import requests

url = 'http://example.com'
response = requests.get(url)

# Kiểm tra xem mọi thứ có ổn không
if response.status_code == 200:
    print("Trang đã được tải thành công!")
else:
    print("Có lỗi xảy ra. Mã lỗi:", response.status_code)

Chương trình này sẽ gửi yêu cầu tới URL và hiển thị thành công hoặc lỗi, tùy thuộc vào phản hồi. Nếu mọi chuyện ổn, chúng ta sẽ có mã HTML của trang dưới dạng văn bản.

Theo dõi mã lỗi

Nếu bạn tự động hóa việc phân tích, bạn sẽ thường xuyên gặp phải tình huống trang đáng lẽ phải tải về thì lại không tải được. Vì vậy, việc phân tích mã lỗi là phần không thể thiếu khi thực hiện các dự án phân tích nhiều hơn vài trang.

Chuyện là các chủ sở hữu trang web không thực sự thích khi ai đó phân tích dữ liệu của họ. Thứ nhất, nó tạo ra áp lực lên trang web (khi phân tích hàng nghìn trang cùng một lúc). Thứ hai, đó là dữ liệu của họ và họ kiếm tiền từ nó. Có rất nhiều cách để chống lại việc phân tích: CAPTCHA, CloudFlare v.v.

Đối với kinh doanh, lý tưởng nhất là khi bạn có thể phân tích tất cả các đối thủ cạnh tranh của mình, nhưng không ai có thể phân tích bạn. Một kiểu chiến tranh lạnh.

Sử dụng BeautifulSoup để phân tích HTML

Sau khi có mã HTML, chúng ta có thể bắt đầu nghiên cứu nó với BeautifulSoup. Đây giống như mở một quyển sách và đọc nội dung của nó:

Python

from bs4 import BeautifulSoup

# Gửi nội dung mã HTML vào BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')

# Xem bên trong có gì
print(soup.prettify())

Phương pháp prettify() định dạng mã HTML một cách đẹp đẽ, để bạn có thể nghiên cứu nó. Ở bài học tiếp theo, chúng ta sẽ bắt đầu khám phá mã HTML này giống như trẻ em chơi trong hộp cát. Và trở về nhà mệt mỏi, bẩn nhưng hạnh phúc :)

3. Thực hành: tải về và phân tích HTML

Để củng cố sự hiểu biết, hãy thực hiện bài tập thực hành. Chúng ta sẽ cố gắng lấy tiêu đề và mô tả từ trang example.com. Để làm điều này, chúng ta sẽ sử dụng các kiến thức về HTML và kiến thức mới về BeautifulSoup.

Trích xuất dữ liệu

Python

# Trích xuất tiêu đề trang
title = soup.title.string
print("Tiêu đề trang:", title)

# Trích xuất tiêu đề chính (h1)
main_heading = soup.h1.string
print("Tiêu đề chính:", main_heading)

# Trích xuất nội dung văn bản của đoạn văn
paragraph = soup.find('p').text
print("Đoạn văn đầu tiên:", paragraph)

Trong ví dụ này, chúng ta sử dụng các thuộc tính title, h1, và phương pháp find() để lấy từ trang những mẩu thông tin cần thiết. Chúng ta đang trở thành những thám tử mạng, nghiên cứu các dấu vết tại hiện trường!

4. Các lỗi thường gặp

Chắc chắn rằng trong quá trình làm việc với web scraping, bạn sẽ gặp các lỗi phổ biến như xử lý sai yêu cầu HTTP, trích xuất dữ liệu không chính xác hoặc gặp lỗi phân tích HTML. Việc phát triển các script bền vững và đáng tin cậy đòi hỏi sự kiên nhẫn và thực hành. Ví dụ, hãy luôn kiểm tra mã trạng thái (response.status_code) để đảm bảo yêu cầu của bạn đã được thực hiện thành công. Sử dụng không đúng các phương pháp find()find_all() có thể dẫn đến lỗi, nếu bạn không xem xét kỹ cấu trúc của các trang HTML. Hãy luôn phân tích HTML trước khi bắt đầu phân tích.

Web scraping có nhiều ứng dụng thực tế: từ thu thập dữ liệu để phân tích đến giám sát giá cả sản phẩm tự động. Những kiến thức này có thể hữu ích khi tham gia phỏng vấn, nơi bạn có thể được yêu cầu cung cấp ví dụ về mã dự án. Trong thực tế, ví dụ, các marketer sử dụng scraping để giám sát giá cả từ đối thủ, còn các lập trình viên — để tích hợp với các trang web bên ngoài.

Kiến thức về web scraping sẽ rất hữu ích khi xử lý thông tin cho các trình tổng hợp tin tức và hệ thống phân tích. Bạn có thể tự động hóa các tác vụ lặp lại, tạo ra các script tự thu thập dữ liệu từ nhiều nguồn khác nhau. Hãy tiếp tục phát triển ứng dụng ảo của chúng ta và cảm thấy như mình là những bậc thầy thực thụ của web!

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