𝗙𝗿𝗼𝗺 𝗥𝗲𝗴𝗲𝘅 𝘁𝗼 𝗟𝗟𝗠𝘀: 𝗠𝘆 𝗝𝗼𝘂𝗿𝗻𝗲𝘆 𝗘𝘅𝘁𝗿𝗮𝗰𝘁𝗶𝗻𝗴 𝗨𝗻𝘀𝘁𝗿𝘂𝗰𝘁𝘂𝗿𝗲𝗱 𝗪𝗲𝗯 𝗗𝗮𝘁𝗮

Tôi đã cố gắng xây dựng một công cụ so sánh giá. Nó cần dữ liệu sản phẩm từ hàng chục trang thương mại điện tử.

Mỗi trang web lại sử dụng các cấu trúc HTML khác nhau. Một số trang dùng các class CSS ngẫu nhiên. Những trang khác lại dùng JavaScript để tải nội dung.

Kế hoạch đầu tiên của tôi là sử dụng Regex và BeautifulSoup. Nó hoạt động được với hai trang web. Sau đó, mọi thứ đều hỏng bét. Một trang web thay đổi bố cục. Một trang khác bắt đầu sử dụng nội dung động. Tôi đã dành nhiều thời gian để sửa các trình thu thập dữ liệu hơn là sử dụng dữ liệu.

Tiếp theo, tôi thử dùng LLM. Tôi gửi mã HTML thô cho AI và yêu cầu lấy dữ liệu. Cách này cũng thất bại. Kết quả trả về không nhất quán. AI bị "ảo giác" các giá trị. Chi phí API của tôi tăng vọt vì HTML tiêu tốn quá nhiều token.

Tôi đã tìm thấy một giải pháp trung hòa. Hiện tại, tôi sử dụng phương pháp tiếp cận kết hợp (hybrid approach).

Đây là quy trình của tôi:

  • Tiền xử lý HTML. Tôi loại bỏ các thẻ script, style và thanh điều hướng. Tôi chỉ giữ lại văn bản hiển thị. Điều này giúp giữ lượng token ở mức thấp.
  • Sử dụng chế độ JSON. Tôi sử dụng function calling để buộc LLM phải trả về dữ liệu có cấu trúc.
  • Thêm logic thử lại (retry logic). Tôi thử lại tối đa ba lần nếu định dạng JSON thất bại.
  • Lưu bộ nhớ đệm (cache) kết quả. Tôi lưu các kết quả trích xuất thành công theo URL để tránh lặp lại chi phí.

Regex và BeautifulSoup vẫn là lựa chọn tốt nhất cho các trang web tĩnh và có cấu trúc tốt. Chúng nhanh và miễn phí.

LLM là tốt nhất cho các trang web lộn xộn hoặc hay thay đổi. Chúng không phải là phép màu. Bạn phải làm sạch dữ liệu đầu vào trước để tiết kiệm chi phí.

Quy trình làm việc hiện tại của tôi:

• Sử dụng một parser nhẹ cho các trang web đơn giản. • Sử dụng LLM cho các trang web khó đoán. • Theo dõi chi phí trên mỗi lần trích xuất. • Xác thực đầu ra để đảm bảo giá cả trông hợp lý.

Sự thay đổi này đã giúp tôi thêm các cửa hàng mới chỉ trong một giờ thay vì một ngày.

Chiến lược của bạn đối với dữ liệu web lộn xộn là gì? Bạn sử dụng LLM hay trung thành với các trình thu thập dữ liệu truyền thống?

Nguồn: https://dev.to/__c1b9e06dc90a7e0a676b/from-regex-to-llms-my-journey-extracting-unstructured-web-data-5gmh