Cách Xây Dựng Trình Theo Dõi Giá Đối Thủ Cạnh Tranh Với Playwright
Senior Web Scraping Engineer
Tóm tắt nhanh:
- Trình theo dõi giá đối thủ cần một khóa offer ổn định. Khớp nhà bán lẻ, biến thể, thị trường, người bán và loại mua trước khi so sánh giá.
- Playwright có thể chờ giá đã render. Giới hạn phạm vi locator vào phần tóm tắt sản phẩm để trình theo dõi không đọc nhầm giá gợi ý hay giá tham chiếu.
- Giữ số tiền và đơn vị tiền tệ đi cùng nhau. Lưu chuỗi hiển thị và một biểu diễn dạng thập phân để người kiểm tra có thể rà soát bộ phân tích.
- Nếu bắt dữ liệu thất bại thì nên giữ nguyên mức giá tốt gần nhất. Gửi các lỗi truy cập, điều hướng và phân tích đến hệ thống giám sát thu thập.
Giới thiệu
Một trang sản phẩm có thể hiển thị giá khuyến mãi, giá tham chiếu và một hàng sản phẩm liên quan trong cùng một khung nhìn. Nếu một trình theo dõi chỉ đọc ký hiệu tiền tệ đầu tiên, cảnh báo của nó có thể trỏ tới một offer mà khách hàng chưa từng chọn.
Ví dụ Playwright dưới đây đọc giá bên trong một phần tóm tắt sản phẩm trên một cửa hàng demo công khai. Phần thực tế nằm sau bước trích xuất: quyết định khi nào hai mức giá mô tả cùng một offer.
Cài đặt Playwright
Ví dụ này dùng gói Playwright Python và một bản cài đặt Google Chrome. Cài gói vào môi trường dự án và đảm bảo Chrome khả dụng trên worker. Dùng danh sách cho phép rõ ràng các URL sản phẩm cho bộ lập lịch và bắt đầu với một worker duy nhất.
bash
python3 -m pip install playwright
Cấu hình Offer Bạn Sẽ Theo Dõi
Một trình theo dõi nên xác định khóa so sánh trước khi truy cập trang. Bao gồm nhà bán lẻ, sản phẩm hoặc biến thể, thị trường, người bán và loại mua. Giữ đơn vị tiền tệ và cơ sở đơn vị trong các bước kiểm tra so sánh. Mô hình Schema.org Offer phân biệt một offer với mặt hàng cơ bản và có các thuộc tính giá và tiền tệ riêng.
Nếu offer phụ thuộc vào định tuyến theo thị trường, hãy dùng cùng một ngữ cảnh mạng đã được phê duyệt cho các lần bắt dữ liệu có thể so sánh. Quy trình cơ sở hạ tầng giám sát giá mô tả các lựa chọn định tuyến. Trong bản demo này, trình duyệt đọc một kiểu hiển thị theo chuẩn Anh và xác minh trực tiếp định dạng GBP.
Bắt đầu Scraping với Scrapeless
Tăng tốc quy trình web scraping và tự động hóa của bạn với Scrapeless!
Đăng ký hôm nay và nhận $5 tín dụng miễn phí — không cần thẻ tín dụng.Nhận tín dụng miễn phí ngay trong Bảng điều khiển Scrapeless.
Đọc Một Offer Từ Trang Demo Công Khai
Một lần bắt dữ liệu bằng Playwright có thể kiểm tra điều hướng, chờ một price locator duy nhất và xuất ra một bản ghi quan sát gọn nhẹ. Tài liệu tham khảo locator của Playwright giải thích cách locator nhắm vào phần tử và cách các thao tác nghiêm ngặt hoạt động khi có nhiều phần tử khớp. Ví dụ giới hạn phạm vi cả tiêu đề và giá vào cùng một phần tóm tắt sản phẩm.
python
import json
import re
from datetime import datetime, timezone
from decimal import Decimal
from playwright.sync_api import sync_playwright
URL = "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html"
with sync_playwright() as playwright:
browser = playwright.chromium.launch(channel="chrome")
try:
page = browser.new_page(locale="en-GB")
response = page.goto(URL, wait_until="domcontentloaded", timeout=20_000)
if response is None or not response.ok or page.url != URL:
raise RuntimeError("Expected the demo product page")
summary = page.locator(".product_main")
price = summary.locator(".price_color")
price.wait_for(state="visible", timeout=10_000)
display_price = price.inner_text().strip()
match = re.fullmatch(r"£([0-9]+\.[0-9]{2})", display_price)
if match is None:
raise ValueError("Unexpected demo price format")
print(json.dumps({
"product_key": "books-to-scrape:a-light-in-the-attic",
"title": summary.get_by_role("heading", level=1).inner_text(),
"final_url": page.url,
"offer_type": "listed",
"price": str(Decimal(match.group(1))),
"currency": "GBP",
"display_price": display_price,
"observed_at": datetime.now(timezone.utc).isoformat(),
}, ensure_ascii=False))
finally:
browser.close()
Script in ra một bản ghi với chuỗi cho giá trị thập phân, giá trị hiển thị và thời gian. Tiêu chuẩn timestamp Internet định nghĩa cách biểu diễn phần bù UTC để các quan sát có thể được căn chỉnh giữa các worker.
So Sánh Các Lần Bắt Dữ Liệu Thành Công
Một thay đổi giá nên so sánh quan sát hiện tại với quan sát có thể so sánh trước đó cho cùng một offer. Lưu cả hai trước khi gửi cảnh báo. Nếu job tìm thấy lại cùng một giá trị, hãy giữ nguyên lịch sử giá hoặc lưu thêm một lần xác nhận tùy theo nhu cầu báo cáo của bạn.
| Kết quả bắt dữ liệu | Hành động của trình theo dõi |
|---|---|
| Cùng offer và giá thấp hơn | Ghi nhận mức giảm giá và liên kết hai quan sát |
| Cùng offer và cùng giá | Ghi nhận sức khỏe thu thập hoặc một xác nhận |
| Đơn vị tiền tệ hoặc loại mua thay đổi | Kiểm tra lại khóa offer trước khi so sánh |
| Thử thách truy cập, thiếu giá hoặc chuyển hướng bất thường | Ghi nhận sự cố thu thập và giữ lần quan sát hợp lệ gần nhất |
Khi chuyển từ demo sang mục tiêu thực, hãy dùng bộ phân tích locale đã được xác minh và lưu cơ sở tính giá. Một offer theo diện thành viên và một offer thông thường xứng đáng với các chuỗi dữ liệu riêng. Với các trang render sau khi chọn lựa, hãy chờ cả đánh dấu biến thể đã chọn và vùng giá cùng lúc. Giữ phiên bản của bộ phân tích để có thể truy vết cảnh báo sai sau khi trang được thiết kế lại.
Khi Nào Nên Chuyển Playwright Sang Trình Duyệt Được Quản Lý
Bắt đầu với một worker cục bộ. Chuyển sang trình duyệt được quản lý cho tự động hóa web khi việc bảo trì worker hoặc việc chạy lặp lại trở thành một ràng buộc thực tế. Tổng quan về trình duyệt mô tả các phiên trên đám mây, và bảng giá Scrapeless giúp ước tính thay đổi đó. Giữ locator Playwright và khóa offer dưới quyền kiểm soát của bạn. Quy trình proxy Puppeteer đề cập đến mối quan tâm định tuyến liên quan.
Kết luận
Bản demo in ra một offer sản phẩm. Trước khi dùng cùng một cách tiếp cận trên nhiều nhà bán lẻ, hãy kiểm tra điều gì xảy ra khi vùng hiển thị giá trống, đơn vị tiền tệ thay đổi, hoặc trang chuyển hướng. Không quan sát nào trong số đó nên thay thế mức giá so sánh gần nhất trước đó.
Sẵn sàng xây dựng Công cụ Theo dõi Giá Đối thủ?
Tham gia cộng đồng trên Discord hoặc Telegram để trao đổi với các nhà phát triển đang xây dựng quy trình theo dõi giá. Tạo tài khoản trong Bảng điều khiển Scrapeless để bắt đầu.
Câu hỏi thường gặp
Hỏi: Công cụ theo dõi giá đối thủ nên chạy thường xuyên thế nào?
Hãy chọn tần suất phù hợp với cách đội ngũ sử dụng cảnh báo và ngân sách yêu cầu mà trang web cho phép. Một báo cáo giá và một công cụ giám sát khuyến mãi nhạy thời gian có thể dùng các lịch trình khác nhau.
Hỏi: Có cần proxy cho việc theo dõi giá bằng Playwright không?
Một tuyến đường khu vực được cho phép có thể tái hiện giao diện cửa hàng trực tuyến địa phương. Một bản demo cho một thị trường duy nhất hoặc một nguồn địa phương đã được phê duyệt có thể dùng kết nối thông thường của nó.
Hỏi: Trình theo dõi nên làm gì nếu một trang web hiển thị thử thách truy cập?
Ghi lại lỗi và trao đổi lại đường truy cập với chủ sở hữu trang web. Giữ offer thành công trước đó làm đường cơ sở so sánh.
Hỏi: Có thể chạy mà không cần tác nhân AI không?
Playwright và một bộ lập lịch có thể thu thập và so sánh các quan sát. Hãy chạy với mức độ song song có giới hạn và xác thực các locator đã thay đổi trên một trang sản phẩm đã biết.
Hỏi: Bạn có thể giám sát bất kỳ cửa hàng trực tuyến của đối thủ nào không?
Hãy sử dụng các bề mặt đã được phê duyệt và trao đổi với cố vấn pháp lý về các điều khoản áp dụng, giới hạn thu thập và quyền tái sử dụng khi phạm vi chưa rõ ràng.
Tại Scrapless, chúng tôi chỉ truy cập dữ liệu có sẵn công khai trong khi tuân thủ nghiêm ngặt các luật, quy định và chính sách bảo mật trang web hiện hành. Nội dung trong blog này chỉ nhằm mục đích trình diễn và không liên quan đến bất kỳ hoạt động bất hợp pháp hoặc vi phạm nào. Chúng tôi không đảm bảo và từ chối mọi trách nhiệm đối với việc sử dụng thông tin từ blog này hoặc các liên kết của bên thứ ba. Trước khi tham gia vào bất kỳ hoạt động cạo nào, hãy tham khảo ý kiến cố vấn pháp lý của bạn và xem xét các điều khoản dịch vụ của trang web mục tiêu hoặc có được các quyền cần thiết.


