Ưu điểm của web scraping với Python
- Cú pháp đơn giản: có thể viết mã nhanh
- Thư viện tích hợp sẵn:
urllib, lxml... hỗ trợ cho việc scraping
- Thư viện scraping đã rất trưởng thành:
Beautiful Soup, Scrapy...
- Tính đa dụng: có thể dùng để xây dựng pipeline dữ liệu
- Khả năng tương tác: tích hợp với ngôn ngữ khác tốt và hoạt động hiệu quả khi hiệu năng là yếu tố quan trọng
Các thư viện web scraping của Python
BeautifulSoup: phân tích cú pháp HTML/XML, điều hướng và tìm kiếm linh hoạt
Scrapy: nhanh và có khả năng mở rộng, hỗ trợ middleware, crawling phân tán
Selenium: tự động hóa trình duyệt, xử lý các trang thiên về JavaScript
lxml: trình phân tích XML/HTML rất nhanh
pyquery: truy cập phần tử HTML bằng cú pháp kiểu jQuery
Chuẩn bị cho việc scraping
- Khuyến nghị thiết lập môi trường ảo
- Thư viện cần thiết:
Requests, BeautifulSoup, OS
Chọn website mục tiêu để scraping
- Chọn trang Wikipedia "Danh sách giống chó"
- HTML được cấu trúc tốt, có nhiều trường dữ liệu và bao gồm hình ảnh
Viết mã scraping
- Import các thư viện cần thiết
- Dùng User-Agent để giả lập trình duyệt
- Tải trang HTML qua
requests và kiểm tra tính hợp lệ
- Phân tích HTML bằng
BeautifulSoup
- Trích xuất dữ liệu bằng CSS selector
- Tải xuống và lưu hình ảnh
Các thách thức thực tế và thực hành tốt nhất trong web scraping
- Xử lý nội dung động: dùng Selenium hoặc tích hợp splash của Scrapy
- Tránh bị chặn: điều chỉnh tốc độ gửi yêu cầu, mô phỏng trình duyệt, xoay vòng user-agent và proxy
- Giới hạn tốc độ: tôn trọng crawl delay, dùng proxy, tự động điều chỉnh yêu cầu
- Phân tích HTML phức tạp: dùng parser mạnh như
lxml, tăng cường selector
Ý kiến của GN⁺
- Điểm quan trọng nhất: Python là một ngôn ngữ mạnh mẽ cho web scraping, với cú pháp đơn giản và hệ sinh thái thư viện phong phú, phù hợp cho các dự án scraping ở nhiều quy mô khác nhau.
- Lý do thú vị: Web scraping là kỹ năng thiết yếu cho việc thu thập và phân tích dữ liệu, và hướng dẫn này cung cấp kiến thức thực tiễn để các kỹ sư phần mềm mới vào nghề có thể áp dụng vào dự án thực tế.
- Lý do hữu ích: Web scraping có thể được ứng dụng trong nhiều lĩnh vực, và hướng dẫn này giúp phát triển kỹ năng scraping vững thực chiến thông qua các thách thức thực tế và các thực hành tốt nhất.
5 bình luận
Playwright thực sự là số một khi cần render JavaScript. Hỗ trợ ngôn ngữ của nó cũng rất rộng.
Nếu ghép với Scrapy thì có vẻ sẽ tạo ra hiệu ứng cộng hưởng khá tốt.
Ây, dạo này thì phải dùng Playwright chứ.
Khi thực sự làm scraping như một công việc, thứ phiền phức hơn tưởng tượng lại chủ yếu là xử lý trình duyệt (Chrome WebDriver hay phát sinh lỗi) và vượt chặn (
captchadưới nhiều dạng).Ý kiến Hacker News
<domain>/robots.txt, nơi có thông tin hữu ích cho việc scraping website, và trích xuất dữ liệu thông qua metadata có cấu trúc thay vì phân tích các thẻ HTML. Cũng có thư viện để trích xuất phần này thành JSON.read_htmlcủa pandas để lấy liên kết một cách đơn giản. Nhờ đó có thể dễ dàng trích xuất dữ liệu bảng từ website.requests-cachehữu ích trong quá trình scraping. Nó thay thế thư việnrequests, nhưng lưu mọi phản hồi vào cơ sở dữ liệu SQLite dưới dạng cache nên rất hữu ích khi cần điều chỉnh script lúc bị website giới hạn.Điểm quan trọng trong bình luận này là
Chính là ý này. Luôn phải đọc những bài như vậy với việc ghi nhớ rằng ở phần cuối chúng luôn có nội dung quảng bá cho sản phẩm của họ.
Nói ngược lại thì tôi nghĩ các công ty trong nước về cơ bản cũng nên dùng cách này.