Web scraping với GPT-4o: Mạnh mẽ nhưng rất tốn kém
(blancas.io)- Bài viết tóm tắt trải nghiệm phát triển một web scraper có hỗ trợ AI bằng cách sử dụng tính năng đầu ra có cấu trúc mới của OpenAI
Yêu cầu GPT-4o scrape dữ liệu
- Thử nghiệm đầu tiên là yêu cầu GPT-4o trích xuất dữ liệu từ một chuỗi HTML
- Thiết lập đầu ra có cấu trúc bằng mô hình Pydantic
from typing import List, Dict class ParsedColumn(BaseModel): name: str values: List[str] class ParsedTable(BaseModel): name: str columns: List[ParsedColumn] - Prompt hệ thống như sau:
Bạn là chuyên gia web scraping. Bạn sẽ nhận nội dung của một bảng HTML và phải trích xuất dữ liệu có cấu trúc
Phân tích các bảng phức tạp
- Sau khi thử với các bảng đơn giản, tác giả kiểm thử các bảng phức tạp như dự báo thời tiết 10 ngày của Weather.com
- GPT-4o đã thêm cột
Day/Nightvà phân tích dữ liệu một cách chính xác - Cột
Conditionkhông hiển thị trên website nên ban đầu tưởng là hallucination, nhưng khi kiểm tra mã nguồn thì đó là thẻ thực sự tồn tại
Các hàng gộp làm mô hình thất bại
- Tác giả thử một bảng đơn giản trên Wikipedia (Human Development Index), nhưng mô hình thất bại do các hàng được gộp
- Đã thử sửa prompt hệ thống nhưng không có hiệu quả
Yêu cầu GPT-4o trả về XPath
- Để giảm chi phí gọi OpenAI API, tác giả yêu cầu trả về XPath thay vì dữ liệu đã được phân tích
- Tuy nhiên, mô hình thường trả về XPath sai hoặc nhiều khi không trả dữ liệu
Kết hợp hai cách tiếp cận
- Tác giả thử cách tiếp cận trích xuất dữ liệu trước, sau đó dùng dữ liệu đó làm tham chiếu để yêu cầu XPath
- Cách này cho kết quả tốt hơn, nhưng phát sinh vấn đề ảnh bị chuyển thành văn bản
GPT-4o rất đắt đỏ
- Việc scrape bằng GPT-4o có chi phí rất cao
- Tác giả bổ sung logic làm sạch để loại bỏ dữ liệu không cần thiết khỏi chuỗi HTML nhằm cắt giảm chi phí
Kết luận và demo
- Tác giả ấn tượng với chất lượng trích xuất dữ liệu của GPT-4o, nhưng thất vọng vì vấn đề chi phí
- Có cung cấp một bản demo đơn giản dùng Streamlit
- Vẫn còn nhiều điểm có thể cải thiện thông qua các thử nghiệmเพิ่มเติม
Tóm tắt của GN⁺
- Bài viết này khám phá khả năng và giới hạn của web scraping sử dụng AI
- Cho thấy có thể tận dụng tính năng đầu ra có cấu trúc của GPT-4o để trích xuất chính xác dữ liệu bảng phức tạp
- Dù tồn tại vấn đề chi phí và một số giới hạn kỹ thuật, tiềm năng của các công cụ web scraping có hỗ trợ AI vẫn rất rõ ràng
- Các dự án khác cung cấp chức năng tương tự gồm có BeautifulSoup, Scrapy, v.v.
1 bình luận
Ý kiến trên Hacker News
Việc chuyển HTML sang định dạng đơn giản hơn (ví dụ: markdown) rồi đưa cho LLM đã cho kết quả tốt
Với nội dung có cấu trúc (ví dụ: danh sách mục, bảng đơn giản) thì không cần LLM
Thật ngạc nhiên là tác giả đã hoàn thành 99% công việc nhưng lại không tải về và thử ollama cho 1% còn lại
Có người dùng cách chụp ảnh màn hình trang, cắt phần cần thiết rồi gửi cho GPT
OpenAI gần đây đã công bố Batch API
Cách đưa ví dụ HTML rồi yêu cầu đoạn mã beautifulsoup đã tỏ ra hiệu quả
Có người thắc mắc liệu đã có "html reducer" hay chưa
Thay vì scrape trực tiếp bằng GPT-4o, có thể để GPT-4o viết một script web scraper đơn giản
Tại Kadoa, họ đang triển khai công việc scrape web tự động hóa bằng AI
Có người đang xây dựng cơ sở dữ liệu nhạc cổ điển
from_htmlcủa Pandas hữu ích, nhưng không phải bảng nào cũng dùng thẻ<table>