Cách thu thập dữ liệu từ zalando.co.uk (chỉ thời trang)

By JoeVu, at: 22:08 Ngày 17 tháng 1 năm 2024

Thời gian đọc ước tính: __READING_TIME__ phút

How to scrape zalando.co.uk (fashion only)
How to scrape zalando.co.uk (fashion only)

 

1. Playwright: Một Công cụ Tự động hóa Web Mạnh mẽ

 

Playwright là gì?

 

Playwright là một công cụ tự động hóa web toàn diện được phát triển bởi Microsoft từ ngày 30 tháng 1 năm 2020. Nó được thiết kế để tương tác với các trình duyệt web như Chrome, Firefox và Safari, cung cấp một cách tiếp cận linh hoạt và mạnh mẽ để tương tác với trang web và trích xuất dữ liệu.

 

Tại sao chọn Playwright?

 

Playwright không chỉ là một công cụ tự động hóa trình duyệt đơn giản. Nó cung cấp tính linh hoạt trong việc thực hiện nhiều tác vụ khác nhau bao gồm tương tác web, thao tác chuột và bàn phím, chụp ảnh màn hình và thậm chí xử lý các ứng dụng đa trang. Tính linh hoạt này làm cho Playwright trở thành lựa chọn lý tưởng cho việc thu thập dữ liệu web hiệu quả.

 

Một giải pháp khác là Selenium, nhưng Playwright tốt hơn nhiều về:

 

  • Hỗ trợ Trình duyệt được cải thiện: Playwright cung cấp hỗ trợ gốc cho tất cả các trình duyệt chính (Chromium, Firefox và WebKit) bằng một API duy nhất, cho phép kiểm thử đa trình duyệt nhất quán mà không cần cấu hình riêng cho từng trình duyệt.
     

  • Xử lý tốt hơn các tính năng Web hiện đại: Được thiết kế cho các ứng dụng web hiện đại, Playwright dễ dàng hỗ trợ các trường hợp phức tạp như ứng dụng một trang (SPA), web socket và service worker, những thứ có thể gây khó khăn cho Selenium.
     

  • Thực thi nhanh hơn: Nhờ kiến trúc và tối ưu hóa, Playwright cung cấp tốc độ thực thi kiểm thử nhanh hơn so với Selenium, giảm thời gian chạy kiểm thử tổng thể, đặc biệt là trong các bộ kiểm thử tự động mở rộng.
     

  • Thực thi kiểm thử song song tích hợp sẵn: Playwright bao gồm hỗ trợ tích hợp sẵn để chạy kiểm thử song song, đơn giản hóa việc thiết lập và mở rộng bộ kiểm thử, không giống như Selenium, yêu cầu các công cụ bổ sung để kiểm thử song song.
     

  • Các tính năng chờ tự động: Nó tự động chờ các phần tử sẵn sàng trước khi thực hiện các hành động, giảm thiểu sự không ổn định và cải thiện độ tin cậy của kiểm thử bằng cách giảm nhu cầu chờ đợi rõ ràng.
     

  • Thiết lập đơn giản cho kiểm thử Headless: Cung cấp cấu hình đơn giản cho kiểm thử headless, Playwright tạo điều kiện tích hợp dễ dàng hơn vào các đường ống CI/CD cho môi trường kiểm thử tự động.

  • Bộ API phong phú cho các tương tác hiện đại: Với bộ API toàn diện, Playwright mô phỏng các tương tác người dùng phức tạp như các kịch bản đa trang, tải lên và tải xuống tệp, làm cho nó có thể thích ứng để kiểm thử các giao diện người dùng phức tạp.

  • Khả năng gỡ lỗi nâng cao: Playwright cung cấp các công cụ để chụp ảnh màn hình, ghi lại video phiên kiểm thử và theo dõi các hành động, hỗ trợ trong việc chẩn đoán và giải quyết các sự cố trong kiểm thử tự động.

  • Hỗ trợ đa ngôn ngữ: Ban đầu dành cho Node.js, Playwright hiện cũng hỗ trợ Python, Java và C#, làm cho nó có thể truy cập được bởi nhiều nhóm phát triển hơn trên các ngăn xếp công nghệ khác nhau.

  • Phát triển tích cực và hỗ trợ cộng đồng: Là một công cụ mới hơn, Playwright được hưởng lợi từ việc phát triển tích cực, cập nhật thường xuyên và một cộng đồng đang phát triển cung cấp rất nhiều tài nguyên và hỗ trợ.

 

2. Mục tiêu và Đầu ra Dữ liệu

 

Mục tiêu là thu thập tất cả các sản phẩm thời trang nam. Chúng ta muốn thu thập giá cả, tên sản phẩm, mô tả của sản phẩm. Định dạng kết quả được hiển thị bên dưới

 

[
    {
        "listing_url": https://www.zalando.co.uk/pier-one-shirt-olive-pi922d0b0-n11.html,
        "title": "Pier One Shirt - olive",
        "description": " Pier One Shirt - olive giá 327.99 (02/08/2023) Miễn phí vận chuyển cho hầu hết các đơn hàng*"
    },
    {
        "listing_url": https://www.zalando.co.uk/pier-one-shirt-black-pi922d0b0-q11.html,
        "title": "Pier One Shirt - black",
        "description": " Pier One Shirt - black giá 327.99 (02/08/2023) Miễn phí vận chuyển cho hầu hết các đơn hàng*",
    }
]

# Mỗi mục trong mảng JSON đại diện cho một sản phẩm với các chi tiết như URL sản phẩm, tên và mô tả

 

3. Giải pháp

 

3.1. Xem xét trang web

 

Tại sao cần xem xét trang web trước khi tiến hành thu thập dữ liệu? Nếu không xem xét trang web, chúng ta sẽ không biết trang web cung cấp thông tin gì, sản phẩm được trình bày như thế nào hoặc cấu trúc tổng thể của trang web. Không hiểu rõ về trang web mà chúng ta muốn thu thập dữ liệu, việc xây dựng chiến lược thu thập dữ liệu hiệu quả trở nên khó khăn. Do đó, việc xem xét trang web là rất quan trọng để phát triển chiến lược thu thập dữ liệu hiệu quả và tối ưu nhất.

Hãy dành thời gian xem qua tất cả các trang dành cho sản phẩm nam. Nhấp chuột phải vào trang và chọn “Inspect” để kiểm tra cấu trúc chi tiết của các phần tử web. Việc xem xét kỹ càng hơn sẽ giúp chúng ta dễ dàng xây dựng chiến lược thu thập dữ liệu tốt nhất cho nhu cầu của mình.

 

3.2. Lập kế hoạch

 

Đầu tiên, để thu thập tất cả các trang sản phẩm cho cả nam, chúng ta có hai cách tiếp cận:

  1. Nếu trang chính hiển thị tổng số trang, chúng ta sẽ ngay lập tức truy xuất giá trị đó để lấy tất cả các trang của trang web.
  2. Nếu không, chúng ta sẽ truy xuất tổng số sản phẩm và chia cho số sản phẩm trên mỗi trang để tính tổng số trang.

Sau đó, sau khi thu thập tất cả các URL của trang sản phẩm, chúng ta sẽ truy cập từng liên kết/URL để thu thập chi tiết sản phẩm.

Đối với trang web này, quy trình sẽ bao gồm việc thu thập danh sách URL cho tất cả các sản phẩm trước tiên. Sau đó, chúng ta sẽ thu thập tất cả thông tin còn lại.

 

3.3. Sử dụng Playwright

 

Cài đặt Playwright:

 

pip install playwright
playwright install


Viết mã Playwright:

 

  • Nhập Playwright vào mã Python của bạn.
  • Khởi tạo ngữ cảnh trình duyệt.
  • Điều hướng đến zalando.co.uk.
  • Tương tác với các phần tử bằng cách sử dụng bộ chọn.
  • Trích xuất và lưu trữ dữ liệu cần thiết.

 

Ví dụ:

 

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto("https://www.zalando.co.uk/mens-clothing/")
    # Thực hiện các hoạt động trích xuất dữ liệu
    # ...
    browser.close()

 

3.4. Thu thập tất cả các trang của Thời trang Nam

 

Sau các bước ban đầu để truy cập trang web, nhiệm vụ tiếp theo là trích xuất thông tin về tất cả các sản phẩm bằng cách điều hướng qua phân trang.

 


# Ví dụ mã để lấy tất cả các liên kết phân trang sản phẩm
total_page = calculate_total_pages()  # Tính toán tổng số trang ở đây
results = []

for page in range(0, total_page):
    link = f"https://www.zalando.co.uk/mens-clothing/?p={page + 1}"
    results.append(link)

# Ghi các liên kết vào tệp
with open(result_path, "w") as fp:
    for line in results:
        fp.write(f"{line}\\n")

 

3.5. Thu thập chi tiết sản phẩm cho mỗi sản phẩm

 

Sau khi bạn có một tệp chứa tất cả các liên kết chi tiết đến các sản phẩm, hãy đọc từng liên kết một và trích xuất thông tin cần thiết.

 

# Ví dụ mã để thu thập chi tiết sản phẩm
for link in read_links_from_file(result_path):
    product_data = scrape_product_details(link)
    # Xử lý dữ liệu sản phẩm theo yêu cầu


Sử dụng Playwright để tận dụng khả năng hiển thị JavaScript của nó để trích xuất thông tin như URL, tiêu đề, mô tả.

# Ví dụ mã để truy xuất thông tin sản phẩm
data = self.page.query_selector('script[type="application/ld+json"]')
if data:
    data = json.loads(data.text_content())
else:
    return
title = f'{data.get("manufacturer")} {data.get("name")}'
description = data.get("description")
listing_url = f'https://www.zalando.co.uk/{data.get("url")}'
price = data.get("offers", [])[0].get("price")
product = {
    "listing_url": listing_url,
    "title": title,
    "description": description,
    "price": price
}
return product


 

4. Mã nguồn cuối cùng

 

 

5. Các vấn đề tiềm ẩn

 

  1. ReCaptcha

    ReCaptcha đặt ra một thách thức đáng kể cho các công cụ tự động hóa trình duyệt như Playwright. Điều này có thể cản trở việc tự động hóa các quy trình đăng nhập hoặc tương tác trên các trang web yêu cầu xác nhận người dùng.

    Giải pháp: Sử dụng API của hệ thống hoặc thư viện giải quyết Captcha để xử lý ReCaptcha hiệu quả. Ngoài ra, có thể tăng ngoại lệ để điều hướng qua các phiên khác nhau.

  2. Bị cấm IP

    Khi sử dụng Playwright để thực hiện nhiều yêu cầu từ cùng một địa chỉ IP, có nguy cơ bị máy chủ chặn.

    Giải pháp: Sử dụng proxy để thay đổi địa chỉ IP một cách năng động và tránh bị chặn.

  3. Giới hạn yêu cầu

    Một số trang web áp đặt các hạn chế về số lượng yêu cầu được phép trong một khoảng thời gian nhất định, đặc biệt là khi sử dụng Playwright để tự động hóa.

    Giải pháp: Tối ưu hóa số lượng yêu cầu và thời gian chờ giữa các yêu cầu. Đối với các trang web yêu cầu đăng nhập, hãy xem xét sử dụng phiên để duy trì trạng thái đăng nhập.

  4. Bố cục trang khác nhau

    Các trang web thường thay đổi cấu trúc và giao diện của chúng, điều này có thể làm giảm sự ổn định của các tập lệnh tự động.

    Giải pháp: Tạo các tập lệnh linh hoạt, chú ý đến việc xử lý nhiều trường hợp về cấu trúc trang.

  5. Ứng dụng bị treo hoặc sập

    Playwright có thể gặp sự cố với một số trình duyệt hoặc trang web, dẫn đến sự cố hoặc đóng ứng dụng.

    Giải pháp: Sử dụng cơ chế xử lý lỗi của Playwright để ghi nhật ký và thông báo sự cố. Sử dụng các dịch vụ như Sentry hoặc các công cụ giám sát khác để theo dõi và báo cáo nhanh chóng các sự cố xảy ra.

 

Bằng cách chủ động giải quyết các vấn đề này và áp dụng các giải pháp phù hợp, bạn có thể tận dụng tối đa tiềm năng của Playwright trong tự động hóa trình duyệt.

 

6. Mẹo, thủ thuật và các thực tiễn tốt nhất

 

  • Quản lý thời gian chờ: Tích hợp thời gian chờ phù hợp vào các tập lệnh của bạn để cho phép các trang web có đủ thời gian để hiển thị JavaScript. Điều này rất quan trọng để đảm bảo rằng các phần tử được tải đầy đủ trước khi tương tác với chúng, giảm khả năng xảy ra lỗi.
     
  • Xử lý lỗi: Thực hiện các cơ chế xử lý lỗi mạnh mẽ để duy trì sự ổn định trong quá trình thu thập dữ liệu. Ghi nhật ký lỗi một cách thích hợp và xem xét việc thử lại các hành động không thành công với các chiến lược backoff theo cấp số mũ để cải thiện độ tin cậy.
     
  • Quản lý User-Agent: Đặt tiêu đề User-Agent để mô phỏng các trình duyệt và thiết bị khác nhau, giúp tránh bị phát hiện và chặn tiềm năng từ máy chủ. Xoay vòng User-Agent định kỳ để bắt chước hành vi người dùng đa dạng.
     
  • Sử dụng ChatGPT Vision để trích xuất dữ liệu từ HTML: Tận dụng ChatGPT Vision để tăng cường khả năng trích xuất dữ liệu của bạn. Bằng cách tích hợp ChatGPT Vision, bạn có thể trích xuất thông tin từ HTML một cách hiệu quả, làm cho quy trình thu thập dữ liệu của bạn thông minh hơn và thích ứng hơn.
     
  • Xác định phần tử động: Sử dụng các chiến lược mạnh mẽ để xác định các phần tử web một cách năng động. Sử dụng các định danh ổn định như lớp CSS hoặc thuộc tính dữ liệu giúp các tập lệnh của bạn thích ứng với những thay đổi trong cấu trúc trang web.
     
  • Xoay vòng Proxy: Sử dụng xoay vòng proxy để đa dạng hóa địa chỉ IP, ngăn chặn việc bị cấm IP và tăng cường tính ẩn danh của hoạt động thu thập dữ liệu web của bạn.
     
  • Ghi nhật ký và giám sát: Thực hiện ghi nhật ký toàn diện để theo dõi các hoạt động của tập lệnh và xác định các vấn đề tiềm ẩn. Sử dụng các công cụ hoặc dịch vụ giám sát như Sentry để nhận cảnh báo về các lỗi nghiêm trọng.
     
  • Tránh quá tải máy chủ: Hãy chú ý đến tốc độ yêu cầu của bạn để tránh quá tải máy chủ, điều này có thể dẫn đến việc bị cấm IP. Thực hiện các chiến lược giới hạn tốc độ để phù hợp với chính sách của trang web mục tiêu.
     
  • Bảo trì tập lệnh thường xuyên: Định kỳ xem xét và cập nhật các tập lệnh của bạn để phù hợp với những thay đổi trong cấu trúc hoặc chính sách của trang web mục tiêu. Việc bảo trì thường xuyên đảm bảo hiệu quả liên tục và giảm thiểu gián đoạn.
     
  • Môi trường kiểm thử: Phát triển và kiểm thử các tập lệnh của bạn trong môi trường được kiểm soát trước khi triển khai chúng trong sản xuất. Điều này giúp xác định các vấn đề tiềm ẩn sớm và đảm bảo quá trình tự động hóa diễn ra suôn sẻ hơn.
     

Bằng cách kết hợp những mẹo, thủ thuật và các thực tiễn tốt nhất này vào các tập lệnh Playwright của bạn, bạn có thể nâng cao độ tin cậy, khả năng thích ứng và hiệu quả tổng thể của chúng trong việc tự động hóa các tương tác trình duyệt và trích xuất dữ liệu.

 

7. Kết luận

 

Sử dụng Playwright để thu thập dữ liệu từ zalando.co.uk cung cấp sự linh hoạt và sức mạnh. Bạn có thể tự động hóa nhiều tác vụ và thu thập thông tin sản phẩm chi tiết một cách hiệu quả. Tuân thủ các thực tiễn tốt nhất đảm bảo sự ổn định và an toàn trong suốt quá trình thu thập dữ liệu. Chúc bạn thu thập dữ liệu vui vẻ!

 

Tag list:
- Python
- Best Practices
- Automation
- Web Scraping
- Data extraction
- Web Crawler
- Web Crawling
- PlayWright
- HTML Parsing
- HTML Parser
- Tips and Tricks

Liên quan

Python Scrapers

Đọc thêm
Python Scrapers

Đọc thêm
Python Scrapers

Đọc thêm

Theo dõi

Theo dõi bản tin của chúng tôi và không bao giờ bỏ lỡ những tin tức mới nhất.