Cơ hội trúng 1 TB lưu lượng truy cập dân cư, iPhone 18 Pro Max cùng + 33 giải thưởng khácNạp $50 = 1 vé tham giaTham gia
Doanh nghiệp

Screen scraping: công cụ, ví dụ Python và tự động hóa

Screen scraping: công cụ, ví dụ Python và tự động hóa

Tóm tắt bài viết này bằng AI:

Trang sản phẩm hiển thị tiêu đề, giá và tình trạng hàng, nhưng bạn cần những thông tin đó trong một bộ dữ liệu có thể cập nhật và so sánh. 

🔥

Hướng dẫn này dùng Yozh Scraper của CyberYozh để minh họa screen scraping, bắt đầu từ một trang và tiến tới thu thập lặp lại được.

Bạn sẽ biết cách chọn phương pháp trích xuất, kiểm tra kết quả có khớp với trang hay không và lưu các bản ghi hữu ích. Sau đó, chúng ta sẽ tìm hiểu các tùy chọn với Python và tự động hóa để lặp lại tác vụ, cùng cài đặt proxy khi vị trí hoặc tính nhất quán của kết nối là yếu tố quan trọng. 

💡

Hiểu các thuật ngữ: screen scraping, web scraping và parsing

Screen scraping trích xuất thông tin hiển thị qua giao diện trực quan, chẳng hạn trang web đã được render, ứng dụng máy tính cũ không có tính năng xuất dữ liệu, hoặc ảnh chụp màn hình được đọc bằng nhận dạng ký tự quang học (OCR).

Trong các dự án web, những thuật ngữ này chồng lấn nhau. Web scraping bao gồm việc thu thập dữ liệu website, kể cả tải trang và trích xuất nội dung. Screen scraping tập trung vào thông tin hiển thị qua giao diện, thường có thể đọc trực tiếp từ các phần tử trang mà không cần OCR. Parsing là phân tích HTML, văn bản hoặc dữ liệu khác để xác định từng giá trị riêng lẻ; sau đó các giá trị được làm sạch và xác thực trước khi sử dụng.

Screen scraping là gì

Screen scraping là việc tự động trích xuất thông tin hiển thị qua giao diện người dùng. Screen scraper đọc thông tin đó và chuyển thành dữ liệu mà hệ thống khác có thể dùng, chẳng hạn các hàng trong bảng tính hoặc các trường trong tệp JSON.

Nguồn dữ liệu quyết định cách scraper hoạt động:

  • Trang web: Trình duyệt tải trang sản phẩm, sau đó scraper thu thập tiêu đề, giá và tình trạng hàng từ nội dung đã render.

  • Ứng dụng cũ: Công cụ tự động hóa đọc thông tin tồn kho hoặc khách hàng từ hệ thống nghiệp vụ cũ không có tùy chọn xuất dữ liệu hữu ích.

  • Hình ảnh: Nhận dạng ký tự quang học (OCR) chuyển văn bản trong ảnh chụp màn hình hoặc ảnh quét thành ký tự máy có thể đọc được.

Screen scraping hoạt động như thế nào?

Với một trang sản phẩm, chẳng hạn trên Amazon, trình duyệt tải giao diện, các quy tắc trích xuất xác định giá trị, và bước xác thực kiểm tra kết quả có dùng được hay không. Quy trình gồm năm giai đoạn:

  1. Mở trang. Truy cập URL sản phẩm với cài đặt vị trí và phiên cần thiết cho tác vụ của bạn.

  2. Chờ nội dung cần thiết. Xác nhận giá và tình trạng hàng đã tải xong trước khi thu thập.

  3. Xác định và trích xuất các trường. Dùng các quy tắc chọn phần tử để lấy tiêu đề sản phẩm, giá, đơn vị tiền tệ và trạng thái tồn kho.

  4. Xác thực giá trị. Kiểm tra trường bị thiếu, đơn vị tiền tệ bất ngờ và thông báo lỗi bị thu thập nhầm thành dữ liệu sản phẩm.

  5. Lưu kết quả. Lưu các bản ghi cùng URL nguồn và thời điểm thu thập để có thể so sánh kết quả sau này.

Amazon scraper của bạn có thể trả về các trường đã trích xuất kèm ảnh chụp màn hình. Giữ cả hai giúp điều tra sai lệch: bạn có thể so sánh giá trị bị thiếu hoặc sai với những gì trình duyệt hiển thị và xác định trích xuất đã sai ở đâu.

Screen scraping so với web scraping và API

Hãy chọn phương pháp cung cấp đủ các trường cần thiết với ít xử lý thừa nhất. Bắt đầu với phương pháp đơn giản nhất có thể cung cấp dữ liệu bạn cần. Kiểm tra xem có API chính thức hoặc tính năng xuất danh mục tích hợp hay không, chẳng hạn tệp CSV, bảng giá Excel hoặc nguồn cấp XML.

Nếu cả hai đều không phù hợp, hãy kiểm tra HTML do máy chủ trả về để xem nó đã chứa các trường cần thiết hay chúng được tải qua JavaScript. Điều này giúp xác định có cần render hoặc tương tác trên trình duyệt hay không.

Phương pháp

Dữ liệu đọc được

Khi nào phù hợp

Yêu cầu bảo trì chính

API hoặc xuất dữ liệu

Phản hồi có cấu trúc hoặc tệp có thể tải xuống

Nguồn cung cấp các trường bạn cần

Theo dõi thay đổi lược đồ, yêu cầu truy cập và hạn mức

Trích xuất HTML trực tiếp

HTML do máy chủ trả về

Giá trị có sẵn mà không cần chạy JavaScript

Cập nhật quy tắc trích xuất khi mã đánh dấu thay đổi

Trích xuất qua trình duyệt

Các phần tử trang sau khi render hoặc tương tác

Nội dung phụ thuộc vào JavaScript, bộ lọc hoặc trạng thái phiên

Duy trì selector, điều kiện tải và phiên

OCR hoặc tự động hóa máy tính

Điểm ảnh, văn bản terminal hoặc các điều khiển của ứng dụng

Giao diện cung cấp dữ liệu mà không có tính năng xuất hữu ích

Kiểm tra thay đổi bố cục, định danh điều khiển và độ chính xác nhận dạng

Screen scraping và web scraping chồng lấn nhau. Render một website và đọc các phần tử trang của nó vẫn là web scraping; dùng trình duyệt không có nghĩa là tự động phải diễn giải điểm ảnh.

💡

Yozh Scraper hỗ trợ scraping qua trình duyệt bằng cách render các trang chạy JavaScript, tái sử dụng trạng thái đăng nhập lưu trong cookie và localStorage giữa các yêu cầu trong một phiên đã cấu hình, và lưu các preset selector cho những tác vụ trích xuất định kỳ.

Công cụ screen scraping: chọn theo nguồn dữ liệu

Công cụ screen scraping web phù hợp phụ thuộc vào nơi dữ liệu xuất hiện và cách bạn truy cập nó. Các công cụ screen scraping mã nguồn mở bao gồm tự động hóa trình duyệt và OCR, trong khi các nền tảng rộng hơn còn hỗ trợ cả quy trình trên máy tính.

Yozh Scraper: dịch vụ trích xuất qua trình duyệt dùng ngay

Yozh Scraper là một REST API miễn phí, tự lưu trữ, xây dựng trên Playwright. Nó render trang web trong trình duyệt thật và trả về các trường được chọn bằng CSS hoặc XPath, Markdown sạch cho các mô hình ngôn ngữ lớn (LLM), HTML thô và ảnh chụp toàn trang. Các preset tích hợp và tùy chỉnh cho phép bạn tái sử dụng quy tắc trích xuất, còn hàng đợi tác vụ bất đồng bộ xử lý các yêu cầu cho một trang lẫn hàng loạt.

Sau khi thiết lập kho mã và môi trường ban đầu, docker compose up --build khởi động cả scraper lẫn crawler đi kèm. Scraper Tester tùy chọn cần Node.js và khởi động riêng, cung cấp giao diện web để kiểm thử selector và xem kết quả.

Dự án dùng giấy phép MIT, nên bạn có thể chạy cục bộ mà không mất phí bản quyền phần mềm hay tích hợp trả phí. Bạn tự cung cấp tài nguyên tính toán; hosting, proxy trả phí và việc dùng API LLM tùy chọn có chi phí riêng khi sử dụng, kể cả trong lúc kiểm thử. Phần tiếp theo hướng dẫn cấu hình một tác vụ trích xuất và xác minh kết quả.

Playwright: điều khiển trình duyệt trực tiếp từ Python

Hãy chọn Playwright khi bạn muốn viết script cho các thao tác nhấp, bộ lọc và điều hướng bằng Python. Nó cung cấp tự động hóa trình duyệt, còn mã của bạn định nghĩa việc trích xuất, xác thực và lưu trữ. Bạn tự duy trì selector và điều kiện tải.

Tesseract: nhận dạng văn bản từ hình ảnh

Tesseract là công cụ OCR mã nguồn mở, miễn phí, chuyển văn bản trong ảnh thành đầu ra máy có thể đọc được. Dùng nó cho tài liệu quét hoặc thông tin chỉ có dưới dạng điểm ảnh, chẳng hạn giá, số điện thoại hoặc SKU nhúng trong ảnh hay vẽ trên canvas. Hãy chụp hình ảnh liên quan trước, rồi kiểm tra lỗi trong văn bản nhận dạng trước khi lưu.

UiPath: tự động hóa trên nhiều giao diện ứng dụng

UiPath là nền tảng tự động hóa quy trình bằng robot (RPA) cho ứng dụng máy tính và web. Nó phù hợp với các quy trình làm việc dùng hệ thống kho hoặc kế toán Windows cũ không có tính năng xuất dữ liệu hữu ích. Công cụ tự động hóa có thể chuyển giữa các cửa sổ ứng dụng, đọc các điều khiển giao diện có thể truy cập và dùng OCR khi văn bản chỉ hiển thị trên màn hình. Các giá trị bảng được trích xuất vẫn cần kiểm tra lỗi nhận dạng và việc căn đúng hàng, cột.

Cách screen scraping với Yozh Scraper

Hãy bắt đầu với Books to Scrape, một hiệu sách thử nghiệm được tạo ra để luyện tập scraping. Trang sản phẩm A Light in the Attic của nó có các trường dễ đoán và nội dung tĩnh, rất phù hợp để làm quen với các điều khiển trước khi chuyển sang các website động.

1. Xác định đầu ra

Tạo một bản ghi gồm tiêu đề sản phẩm, giá, tình trạng hàng, URL nguồn và thời điểm thu thập. Trích xuất ba trường đầu từ trang; thêm URL và dấu thời gian UTC khi lưu bản ghi.

2. Khởi động scraper

Khi đã cài Git và Docker, hãy làm theo hướng dẫn cài đặt Yozh Scraper:

git clone https://github.com/CyberYozh-data/yozh-scraper

bash
git clone https://github.com/CyberYozh-data/yozh-scraper
cd yozh-scraper
cp .env.example .env
docker compose up --build

Lệnh cuối khởi động cả scraper trên cổng 8000 và crawler đi kèm trên cổng 8001. Hãy để Docker tiếp tục chạy. Mở tài liệu API của scraper tại http://localhost:8000/docs; tài liệu của crawler có tại http://localhost:8001/docs.

3. Mở trình kiểm thử trực quan

Trình kiểm thử khởi động riêng và cần Node.js 18+. Trong một terminal khác, chuyển đến thư mục kho yozh-scraper và chạy:

bash
cd scraper-tester
npm install
node server.js

Mở http://localhost:7000. Ở phần đầu trang, xác nhận Scraper URL là http://localhost:8000, rồi nhấp Check bên cạnh. Huy hiệu trạng thái màu xanh lá xác nhận có thể kết nối tới scraper.

4. Cấu hình trích xuất

Trong Scrape Page, nhập URL thực hành, chọn kết nối trực tiếp (none) và cấu hình trích xuất CSS với các quy tắc sau:

Trường

CSS selector

Tiêu đề

.product_main h1

Giá

.product_main .price_color

Tình trạng hàng

.product_main .availability

Đọc văn bản của từng phần tử và đánh dấu các trường là bắt buộc. Đặt wait_for_selector thành .product_main .price_color. Bật đầu ra ảnh chụp màn hình và giữ chế độ chặn hình ảnh ở trạng thái tắt.

5. Chạy thử một mẫu nhỏ

Mở Presets và dùng Preset Builder. Dán cùng URL sản phẩm, nhấp Fetch sample, rồi chọn Manual và nhập các quy tắc CSS đã xác minh. Nhấp Verify và kiểm tra các giá trị đã trích xuất trước khi lưu.

Chọn một tên mô tả; trình kiểm thử tự động thêm tiền tố user_. Chọn preset đã lưu trong Scrape Page và thử trên một trang sách khác trước khi mở rộng thu thập. Tính năng chọn trường có AI hỗ trợ cũng khả dụng khi đã được cấu hình.

Với các tác vụ sau này cần truy cập theo khu vực, hãy đặt CYBERYOZH_API_KEY trong .env, áp dụng cấu hình Docker đã cập nhật và chọn kết nối proxy bạn đã mua. Dùng res_rotating cùng proxy_geo.country_code để nhắm tới một quốc gia. Yozh Scraper tự động đồng bộ ngôn ngữ vùng, múi giờ và header Accept-Language của trình duyệt với quốc gia đó. Hãy xác minh vị trí của IP thoát và nội dung hiển thị trước khi thu thập bộ dữ liệu lớn hơn.

6. Lưu preset có thể tái sử dụng

Mở Presets, lấy cùng trang mẫu, chọn Manual và nhập các quy tắc đã xác minh. Dùng Verify, rồi lưu preset với một tên mô tả. Chọn nó trong Scrape Page và thử trên một trang sách khác trước khi mở rộng thu thập. Tính năng chọn trường có AI hỗ trợ cũng khả dụng khi đã được cấu hình.

Khi mục tiêu sau này yêu cầu truy cập theo khu vực, hãy cấu hình khóa API CyberYozh và kết nối proxy bạn đã mua. Proxy dân cư xoay vòng hỗ trợ vị trí và nhắm mục tiêu địa lý; hãy kiểm tra khu vực được trả về trước khi thu thập bộ dữ liệu lớn hơn.

Python screen scraping: trích xuất và lưu dữ liệu trang

Python screen scraping cho bạn quyền kiểm soát việc điều hướng trang, trích xuất và lưu trữ. Ví dụ này dùng cùng trang sản phẩm Books to Scrape và các selector từ phần hướng dẫn trực quan, rồi lưu bản ghi đã xác thực dưới dạng JSON.

Cài Playwright bằng python -m pip install playwright, tiếp theo là python -m playwright install chromium. Lưu script thành scrape_product.py và chạy python scrape_product.py.

Để dùng kết nối CyberYozh tùy chọn, hãy đặt các biến môi trường sau trong shell chạy script:

  • CYBERYOZH_PROXY_SERVER: endpoint HTTP proxy của bạn, theo định dạng http://HOST:PORT.

  • CYBERYOZH_PROXY_USERNAME: tên đăng nhập proxy của bạn.

  • CYBERYOZH_PROXY_PASSWORD: mật khẩu proxy của bạn.

Nếu không có biến server, script sẽ kết nối trực tiếp. Playwright hỗ trợ cấu hình proxy cho trình duyệt hoặc cho từng ngữ cảnh trình duyệt riêng lẻ.

python
import json
import os
from datetime import datetime, timezone
from playwright.sync_api import sync_playwright, TimeoutError

URL = "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html"

FIELDS = {
    "title": ".product_main h1",
    "price": ".product_main .price_color",
    "availability": ".product_main .availability",
}

options = {}
if server := os.getenv("CYBERYOZH_PROXY_SERVER"):
    options["proxy"] = {
        "server": server,
        "username": os.getenv("CYBERYOZH_PROXY_USERNAME", ""),
        "password": os.getenv("CYBERYOZH_PROXY_PASSWORD", ""),
    }

with sync_playwright() as p:
    browser = p.chromium.launch(**options)
    try:
        page = browser.new_page()
        response = page.goto(URL, wait_until="domcontentloaded")

        if response is None or not response.ok:
            raise SystemExit("Page request failed; check the URL and connection.")

        record = {}
        for field, selector in FIELDS.items():
            element = page.locator(selector)
            try:
                element.wait_for(state="visible", timeout=10000)
                value = " ".join(element.inner_text().split())
            except TimeoutError:
                raise SystemExit(f"Required field missing or not ready: {field}")

            if not value:
                raise SystemExit(f"Required field is empty: {field}")

            record[field] = value

        record.update(
            source_url=page.url,
            collected_at=datetime.now(timezone.utc).isoformat(),
        )

        with open("product.json", "w", encoding="utf-8") as output:
            json.dump(record, output, ensure_ascii=False, indent=2)

        print("Saved product.json")
    finally:
        browser.close()

Script chờ từng phần tử bắt buộc, loại bỏ khoảng trắng thừa và giữ nguyên đơn vị tiền tệ hiển thị. Các trường bị thiếu hoặc trống sẽ dừng lượt chạy kèm thông báo rõ ràng trước khi bản ghi mới được ghi. Đầu ra thành công gồm URL nguồn và thời điểm thu thập theo UTC; chạy lại sẽ ghi đè product.json.

💡

Mẹo: Để tìm hiểu thêm về cách chọn trường và sắp xếp các giá trị đã trích xuất, hãy xem hướng dẫn về parsing dữ liệu.

Nếu bạn đã cấu hình Yozh Scraper, Python có thể tái sử dụng preset đã lưu của bạn qua REST API:

  1. Gửi nó tới POST /api/v1/scrape/preset/page và giữ lại job_id được trả về.

  2. Kiểm tra GET /api/v1/scrape/{job_id} cho đến khi hoàn tất, với thời gian chờ tổng thể và cách xử lý các tác vụ thất bại hoặc bị hủy.

  3. Lấy GET /api/v1/scrape/{job_id}/results, xác thực các trường và lưu chúng.

Tự động hóa screen scraping với crawler, lịch chạy và công cụ AI

Khi việc trích xuất trang sản phẩm đầu tiên đã hoạt động, thách thức tiếp theo là thu thập dữ liệu mới trên toàn danh mục. Hãy xây dựng tự động hóa dựa trên thiết lập đã kiểm thử đó, với giới hạn khi khám phá trang, các lượt chạy theo lịch và bước kiểm tra trước khi lưu kết quả.

Khám phá thêm trang với Yozh Crawler

Yozh Crawler, dịch vụ đi kèm trên cổng 8001, khám phá liên kết và tải trang thông qua Yozh Scraper. Cung cấp một trang danh mục làm seed_url, sau đó đặt scope.mode thành same-domain hoặc dùng regex với các mẫu bao gồm và loại trừ để giới hạn phạm vi khám phá. Đặt scope.max_pages và scope.max_depth để giới hạn số trang và độ sâu liên kết. Bật enable_scraping và cung cấp quy tắc trích xuất để giữ lại các trường đã trích xuất cùng với các URL đã khám phá.

Trên các trang thương mại điện tử (e-commerce), cùng một URL sản phẩm có thể xuất hiện với dấu gạch chéo ở cuối hoặc với cùng các tham số truy vấn theo thứ tự khác. Chuẩn hóa URL (URL canonicalization) đưa những biến thể này về một fingerprint chung để giảm số lần truy cập trùng lặp. Ở chế độ same-domain, crawler cũng coi tên máy chủ có và không có www là tương đương. Việc thay đổi giá trị của một tham số, chẳng hạn tùy chọn sắp xếp hoặc biến thể sản phẩm, khác với việc đổi thứ tự tham số và không tự động khiến các URL trở nên tương đương.

Kiểm soát tần suất yêu cầu bằng scope.per_domain_rps và số yêu cầu đồng thời bằng scope.per_domain_concurrency. Bắt đầu với giới hạn 10 đến 20 trang, kiểm tra các URL đã khám phá và loại trừ những mục không liên quan như bài blog hoặc trang liên hệ trước khi mở rộng thu thập.

Lên lịch thu thập với n8n

Kết nối n8n với một endpoint Yozh REST API có thể truy cập được và xây dựng chuỗi sau:

Trigger theo lịch → gửi tác vụ scraping → kiểm tra hoàn tất → xác thực kết quả → lưu dữ liệu.

Dùng Schedule Trigger của n8n để xác định khoảng thời gian và node HTTP Request để gửi tác vụ. Giữ lại job ID của nó, rồi dùng vòng lặp chờ và kiểm tra để theo dõi tiến độ hoàn tất. Thêm thời gian chờ tổng thể và một nhánh xử lý lỗi để các tác vụ không thành công được chú ý.

Trước khi lưu, hãy kiểm tra các trường bắt buộc và gắn thời điểm thu thập. Tích hợp này dùng API của Yozh và các node tiêu chuẩn của n8n, còn việc lên lịch do n8n quản lý.

💡

Mẹo: Để biết các cách khác lên lịch thu thập định kỳ, hãy xem hướng dẫn tự động hóa web scraping.

Kết nối trợ lý AI qua MCP

Model Context Protocol (MCP) cho phép các trợ lý AI như Claude gọi các công cụ bên ngoài. Với thiết lập cục bộ, hãy kết nối Claude Code với [http://localhost:8000/mcp](http://localhost:8000/mcp) bằng Streamable HTTP. Sau đó bạn có thể yêu cầu: “Hãy scrape trang sản phẩm này và tóm tắt các mức giá trong một bảng.” Trợ lý có thể gửi tác vụ scraping, kiểm tra tiến độ, lấy kết quả và sắp xếp các giá trị đã trích xuất. :chatgpt-content-reference{index="0"}

Yozh Scraper cũng hỗ trợ các preset do AI tạo. Dùng from_prompt để mô tả các trường bạn cần bằng ngôn ngữ thông thường, hoặc from_schema để cung cấp tên trường và kiểu dữ liệu. Cùng với một trang mẫu, các đầu vào này cho phép mô hình tạo ra các selector mà bạn có thể xác minh trước khi lưu. :chatgpt-content-reference{index="1"}

Để tự động sửa selector, hãy cấu hình self_heal và cung cấp cấu hình LLM cho lượt chạy preset. Nếu một trường bắt buộc trả về rỗng, scraper sẽ cố tạo lại selector của nó từ mã đánh dấu hiện tại của trang. Các selector đã sửa có thể được lưu ngược vào preset người dùng; các preset tích hợp vẫn ở chế độ chỉ đọc. Hãy so sánh các giá trị đã sửa với ảnh chụp màn hình trang, vì một trường có dữ liệu vẫn có thể chứa sai giá hoặc sai thông tin sản phẩm. :chatgpt-content-reference{index="2"}

Để bật các tính năng tạo và sửa bằng AI của Yozh, hãy cấu hình khóa API cho OpenAI, Anthropic, Google Gemini hoặc OpenRouter trong .env và chọn một mô hình tương thích. Việc dùng API được tính phí riêng theo bảng giá của nhà cung cấp bạn chọn. :chatgpt-content-reference{index="3"}

Chọn cài đặt kết nối và phiên cho tác vụ của bạn

Khi screen scraping website, hãy chọn cài đặt kết nối dựa trên vị trí bạn cần, độ dài phiên và tần suất bạn truy cập lại một trang. Các tùy chọn proxy của CyberYozh phù hợp với những yêu cầu khác nhau:

  • Proxy dân cư xoay vòng ($4/GB trả theo mức dùng): Dùng IP theo khu vực để thu thập các trang sản phẩm độc lập, với sticky session tối đa 24 giờ khi các bước liên tiếp cần tính liên tục. Lưu lượng chưa dùng được cộng dồn, và các gói lớn hơn có giá mỗi GB thấp hơn.

🦔

Truy cập 100M IP dân cư thật.

  • Static ISP (từ $5.29/tháng): Chọn IP cố định với lưu lượng không giới hạn cho các lượt truy cập lặp lại, thu thập có xác thực và những tác vụ cần một địa chỉ mạng nhất quán.

🦔

Thuê proxy static ISP của bạn và dùng một địa chỉ duy nhất trong suốt thời gian thuê. 

  • Mobile LTE/4G/5G (từ $1.70/ngày cho gói dùng chung): Hãy cân nhắc kết nối của nhà mạng cho việc scraping tìm kiếm Google và các mục tiêu khác có bộ lọc lưu lượng nghiêm ngặt. Carrier-grade NAT (CGNAT) cho phép nhiều thuê bao di động thông thường dùng chung một IP công khai, nên việc chặn toàn bộ địa chỉ đó cũng có thể ảnh hưởng đến những người truy cập hợp lệ. Điều này khiến kết nối nhà mạng đáng để thử nghiệm, dù IP dùng chung vẫn có thể gặp CAPTCHA hoặc giới hạn tốc độ. Lưu lượng không giới hạn giúp chi phí băng thông dễ dự đoán khi việc render trình duyệt liên tục tải script, kiểu dáng và hình ảnh. Với thu thập song song, hãy thuê nhiều kênh di động và phân bổ các worker trình duyệt qua chúng, điều chỉnh mức đồng thời theo dung lượng kết nối và giới hạn của mục tiêu.

🦔

Nhận proxy di động của bạn với IP sạch và không bị vá. 

  • Datacenter: Cân nhắc dùng cho các nguồn công khai phù hợp, nơi một bài thử nhỏ xác nhận việc truy cập và trích xuất hoạt động được.

🦔

Nhận proxy datacenter IPv4/IPv6 riêng tốc độ cao với uptime 99.99%. 

Với các trang yêu cầu đăng nhập hoặc mã ZIP giao hàng nhất quán, tính liên tục của phiên phụ thuộc vào cả trạng thái trình duyệt đã lưu lẫn độ bền của IP proxy. Cookie và localStorage có thể giữ thông tin xác thực và tùy chọn khu vực, tùy cách website lưu trữ chúng.

Yozh Scraper cho phép bạn tạo một phiên qua POST /api/v1/sessions, xác thực qua POST /api/v1/sessions/{id}/login và truyền session_id được trả về cùng các yêu cầu scraping tiếp theo. Cách này tái sử dụng trạng thái trình duyệt đã lưu và giữ cấu hình proxy của phiên nhất quán. Hãy kết hợp với IP tĩnh hoặc kết nối sticky được cấu hình phù hợp khi địa chỉ hiển thị ra bên ngoài phải ổn định. IP cố định không thể gia hạn token đăng nhập đã hết hạn, và cookie đã lưu cũng không thể đảm bảo website sẽ chấp nhận việc đổi IP đột ngột.

💡

Trước một tác vụ, IP Checker của CyberYozh có thể giúp kiểm tra uy tín và các tín hiệu vị trí. API của nó hỗ trợ gửi các lượt kiểm tra uy tín IP và lấy báo cáo. Hãy dùng các kết quả đó cùng với những yêu cầu thử nhỏ: mỗi mục tiêu áp dụng quy tắc truy cập riêng, nên một báo cáo tốt không thể đảm bảo cách mục tiêu sẽ phản hồi.

Các vấn đề screen scraping thường gặp và cách khắc phục

Khi một lượt chạy tạo ra bản ghi không đầy đủ hoặc không nhất quán, hãy so sánh ảnh chụp màn hình đã lưu với đầu ra mẫu từ cùng tác vụ. Việc này giúp phân biệt lỗi tải trang với lỗi trích xuất hoặc định dạng.

Vấn đề

Cần kiểm tra và khắc phục gì

Thiếu trường

Chờ nội dung cần thiết, đối chiếu selector với trang hiện tại và gắn cờ các trường bắt buộc bị trống trước khi lưu.

Giá không chính xác

Xác nhận đơn vị tiền tệ, địa điểm giao hàng và biến thể đã chọn. Kiểm tra dấu phân cách thập phân trước khi chuyển giá thành số.

Nội dung trang bất ngờ

Kiểm tra trạng thái đăng nhập, màn hình đồng ý và các chuyển hướng. Xác nhận cài đặt ngôn ngữ và khu vực khớp với chế độ xem dự kiến.

Bản ghi trùng lặp

Chuẩn hóa các URL tương đương và dùng định danh sản phẩm ổn định. Giữ lại những khác biệt có ý nghĩa giữa các biến thể, khu vực và thời điểm thu thập.

Giới hạn tốc độ lặp lại

Xác định dịch vụ trả về 429. Giảm tần suất yêu cầu và mức đồng thời, tuân thủ Retry-After, và giới hạn số lần thử lại với độ trễ tăng dần.

Thay đổi bố cục

Cập nhật quy tắc trích xuất hoặc dùng tính năng sửa preset đã cấu hình, rồi tự kiểm tra thủ công đầu ra đã sửa so với trang.

Sau khi thay đổi một preset Yozh, hãy chạy lại một mẫu nhỏ trước khi khởi động lại toàn bộ lượt thu thập. Để biết chi tiết cách xử lý thử lại, hãy xem lỗi 429 too many requests.

Screen scraping có hợp pháp không?

Screen scraping có thể hợp pháp, nhưng tính hợp pháp phụ thuộc vào nguồn, phương thức truy cập, loại dữ liệu, khu vực pháp lý và mục đích sử dụng. Việc xem được một trang không tự động cho phép mọi hình thức thu thập hay tái sử dụng.

Trước khi chạy một tác vụ, hãy xem xét các điều khoản hợp đồng của trang, các hạn chế truy cập và mọi quyền hạn hay giấy phép cần thiết. Tôn trọng các chỉ thị robots.txt của trang, nhưng hãy nhớ rằng quy tắc Allow tự nó không cấp phép pháp lý để thu thập hay tái sử dụng nội dung. Kiểm tra quyền tác giả và quyền cơ sở dữ liệu hiện hành trước khi đăng lại hoặc bán tài liệu đã trích xuất.

Nếu bạn thu thập thông tin cá nhân, hãy tuân thủ các quy định bảo vệ dữ liệu hiện hành, bao gồm GDPR khi áp dụng. Thông tin hiển thị công khai vẫn có thể được bảo vệ, như các cơ quan quản lý quyền riêng tư quốc tế đã nhấn mạnh. Hãy thiết lập cơ sở pháp lý hợp lệ cho việc xử lý và chỉ thu thập dữ liệu cá nhân cần thiết cho mục đích đã nêu của bạn.

Nghĩa vụ về quyền riêng tư cũng vẫn còn liên quan. Các cơ quan quản lý quyền riêng tư quốc tế đã nhấn mạnh rằng thông tin cá nhân có thể truy cập công khai vẫn có thể được luật bảo vệ dữ liệu bảo vệ.

Với ví dụ này, hãy giới hạn Yozh Scraper trong các trang thực hành và trường sản phẩm đã chọn. Với công việc thực tế, hãy ghi lại phạm vi được phép, chỉ thu thập dữ liệu cần thiết, hạn chế quyền truy cập vào các bản ghi đã lưu, và đặt quy tắc lưu giữ và xóa. Hãy đưa HTML và ảnh chụp màn hình đã lưu vào các biện pháp kiểm soát đó, vì chúng có thể ghi lại thêm thông tin khác.

Helpful?

Share article

Câu hỏi thường gặp về screen scraping