Quét web là một kỹ thuật thiết yếu để trích xuất thông tin từ các trang web. Nếu bạn đang muốn tìm hiểu cách cạo dữ liệu bằng Python và BeautifulSoup, hướng dẫn này sẽ hướng dẫn bạn thực hiện quy trình từng bước. Đến cuối bài viết này, bạn sẽ biết cách loại bỏ nhiều trang, xử lý nội dung động và sử dụng Ủy quyền máy chủ để tránh lộ địa chỉ IP của bạn. Hãy đi sâu vào ngay!
Mục lục
1. Giới thiệu về Web Scraping
Quét web liên quan đến việc trích xuất dữ liệu từ các trang web bằng cách sử dụng các tập lệnh tự động. Kỹ thuật này được sử dụng rộng rãi cho nhiều mục đích khác nhau, chẳng hạn như phân tích dữ liệu, theo dõi giá và tổng hợp nội dung. Python, với các thư viện mạnh mẽ như BeautifulSoup và Yêu cầu, giúp việc quét web trở nên đơn giản và hiệu quả.
2. Thiết lập môi trường của bạn
Trước khi bắt đầu cạo, chúng ta cần thiết lập phát triển môi trường. Điều này liên quan đến việc cài đặt các thư viện cần thiết. Đây là cách bạn có thể làm điều đó:
yêu cầu cài đặt pip beautifulsoup4 pandas
Những thư viện này rất cần thiết:
- Yêu cầu: Để lấy nội dung của các trang web.
- Súp đẹp: Để phân tích và trích xuất dữ liệu từ các tài liệu HTML.
- gấu trúc: Để lưu trữ và thao tác dữ liệu.
3. Quét trang web bằng BeautifulSoup
Sau khi cài đặt xong các thư viện, bạn có thể bắt đầu viết tập lệnh thu thập dữ liệu của mình. Hãy lấy một ví dụ về việc quét một trang web liệt kê sách.
Nhập thư viện
nhập yêu cầu từ bs4 nhập BeautifulSoup nhập gấu trúc dưới dạng pd
Tìm nạp trang Web
url = "http://books.toscrape.com/" phản hồi = request.get(url) html_content = reply.text
Phân tích cú pháp HTML
súp = BeautifulSoup(html_content, 'html.parser')
4. Xử lý nhiều trang
Để loại bỏ nhiều trang, bạn cần lặp qua các trang và tìm nạp dữ liệu từ mỗi trang. Đây là cách bạn có thể làm điều đó:
Lặp qua các trang
base_url = "http://books.toscrape.com/catalogue/page-{}.html" data = [] for page_num in range(1, 51): # Giả sử có 50 trang reply = request.get(base_url. format(page_num)) soup = BeautifulSoup(response.text, 'html.parser') # Trích xuất dữ liệu sách tại đây và nối vào danh sách dữ liệu books = soup.find_all('article', class_='product_pod') cho sách trong sách: title = book.h3.a['title'] price = book.find('p', class_='price_color').text stock = book.find('p', class_='instock available').text. Strip() data.append({ "Tiêu đề": tiêu đề, "Giá": giá, "Cổ phiếu": chứng khoán })
5. Sử dụng proxy để tránh lệnh cấm IP
Các trang web thường theo dõi địa chỉ IP để ngăn chặn việc thu thập dữ liệu. Sử dụng một máy chủ proxy có thể giúp bạn tránh vấn đề này bằng cách che giấu địa chỉ IP của bạn.
Thiết lập proxy
proxy = { "http": "http://your_proxy_server:port", "https": "http://your_proxy_server:port", } phản hồi = request.get(url, proxy=proxies)
Bằng cách sử dụng proxy, tất cả lưu lượng truy cập của bạn sẽ được chuyển qua một máy chủ khác, ngăn trang web mục tiêu phát hiện địa chỉ IP của bạn.
6. Lưu trữ dữ liệu ở định dạng CSV và Excel
Sau khi thu thập dữ liệu, bạn sẽ muốn lưu trữ dữ liệu đó để phân tích thêm. Bạn có thể sử dụng Pandas để lưu dữ liệu ở định dạng CSV hoặc Excel.
Lưu dữ liệu vào CSV
df = pd.DataFrame(data) df.to_csv('books.csv', index=False)
Lưu dữ liệu vào Excel
df.to_excel('books.xlsx', index=False)
Bảng mẫu dữ liệu được cạo
Tiêu đề | Giá | Cổ phần |
---|---|---|
Thiết kế vĩ đại | £13.76 | Trong kho |
Bắt trẻ đồng xanh | £5.95 | Trong kho |
Thế giới mới dũng cảm | £39.74 | Trong kho |
7. Kết luận
Quét web bằng Python và BeautifulSoup là một kỹ thuật mạnh mẽ để trích xuất dữ liệu từ các trang web. Bằng cách làm theo hướng dẫn này, bạn sẽ có thể quét nhiều trang, xử lý nội dung động và sử dụng proxy để tránh bị cấm IP. Hãy nhớ luôn kiểm tra các điều khoản dịch vụ của trang web trước khi thu thập và sử dụng dữ liệu một cách có trách nhiệm.