🎯 Trình duyệt đám mây tùy chỉnh, chống phát hiện được hỗ trợ bởi Chromium tự phát triển, thiết kế dành cho trình thu thập dữ liệu webtác nhân AI. 👉Dùng thử ngay
Quay lại blog

Cạo dữ liệu web với Perplexity AI: Hướng dẫn Python & 10 giải pháp

Michael Lee
Michael Lee

Expert Network Defense Engineer

11-Oct-2025

Những điểm chính

  • Perplexity AI nâng cao đáng kể việc thu thập dữ liệu web bằng cách cung cấp một công cụ phân tích dựa trên AI, cho phép trích xuất dữ liệu một cách bền vững và thích ứng từ các trang web phức tạp và động.
  • Tích hợp Perplexity AI với các thư viện thu thập dữ liệu web Python cho phép các nhà phát triển tự động hóa việc xác định bộ chọn và trích xuất dữ liệu có cấu trúc bằng cách sử dụng các lệnh nhắc bằng ngôn ngữ tự nhiên, giảm thiểu việc bảo trì thủ công.
  • Hướng dẫn này phác thảo 10 giải pháp chi tiết để tận dụng Perplexity AI trong việc thu thập dữ liệu web bằng Python, bao gồm mọi thứ từ trích xuất HTML cơ bản đến xử lý nội dung động, vượt qua các biện pháp chống thu thập dữ liệu và mở rộng hoạt động.
  • Perplexity AI, khi kết hợp với các giải pháp proxy mạnh mẽ như những gì được cung cấp bởi Oxylabs hoặc Brightdata, có thể vượt qua những thách thức phổ biến trong thu thập dữ liệu web như các thay đổi cấu trúc trang web thường xuyên và phát hiện bot.
  • Scrapeless có thể tiếp tục đơn giản hóa quy trình thu thập dữ liệu web bằng cách cung cấp cơ sở hạ tầng và công cụ đáng tin cậy cho việc thu thập dữ liệu, bổ sung cho khả năng phân tích của Perplexity AI để có một giải pháp tổng thể.

Giới thiệu

Thu thập dữ liệu web, quá trình tự động trích xuất dữ liệu từ các trang web, là một quy trình rất quan trọng cho cả doanh nghiệp và nhà nghiên cứu. Nó cung cấp dữ liệu cho phân tích thị trường, thông tin cạnh tranh, tổng hợp nội dung và nhiều hơn nữa. Tuy nhiên, cảnh quan của web liên tục phát triển, đặt ra những thách thức đáng kể cho các phương pháp thu thập dữ liệu truyền thống. Các trang web thường xuyên thay đổi cấu trúc, triển khai các biện pháp chống bot tinh vi và phục vụ nội dung động, khiến cho việc duy trì các công cụ thu thập dữ liệu mạnh mẽ và đáng tin cậy trở nên khó khăn. Đây là nơi tích hợp Trí tuệ Nhân tạo, đặc biệt là các công cụ như Perplexity AI, cung cấp một cách tiếp cận cách mạng. Perplexity AI, được biết đến với khả năng xử lý ngôn ngữ tự nhiên tiên tiến và khả năng truy xuất thông tin, có thể biến đổi cách chúng ta tiếp cận thu thập dữ liệu web bằng Python. Hướng dẫn này sẽ đi sâu vào cách Perplexity AI có thể được tận dụng để xây dựng các công cụ thu thập dữ liệu web thông minh hơn, bền bỉ hơn và hiệu quả hơn. Chúng tôi sẽ khám phá các chức năng chính của nó, cung cấp mười giải pháp chi tiết với các ví dụ mã Python, và thảo luận về cách nó giải quyết sự mong manh vốn có của các kỹ thuật thu thập dữ liệu truyền thống, cuối cùng làm cho việc trích xuất dữ liệu trở nên dễ tiếp cận và mạnh mẽ hơn.

Hiểu về Perplexity AI trong việc thu thập dữ liệu web

Perplexity AI là một công cụ tìm kiếm hiện đại được điều khiển bởi AI, tận dụng các mô hình ngôn ngữ lớn để cung cấp câu trả lời trực tiếp, có trích dẫn cho các câu hỏi của người dùng. Điểm mạnh cốt lõi của nó nằm ở khả năng hiểu ngôn ngữ tự nhiên, truy xuất thông tin liên quan từ web theo thời gian thực và tổng hợp nó thành các phản hồi hợp lý. Khả năng này khiến nó trở thành một công cụ mạnh mẽ không chỉ cho việc truy xuất thông tin, mà còn để nâng cao các nhiệm vụ phức tạp như thu thập dữ liệu web.

Tại sao chọn Perplexity AI cho việc thu thập dữ liệu web?

Thu thập dữ liệu web truyền thống thường dựa vào các bộ chọn CSS được chế tác tỉ mỉ hoặc các biểu thức XPath để xác định vị trí và trích xuất dữ liệu từ HTML. Cách tiếp cận này vốn dĩ mong manh; ngay cả những thay đổi nhỏ đối với cấu trúc của một trang web cũng có thể làm hỏng một công cụ thu thập dữ liệu, đòi hỏi phải bảo trì và gỡ lỗi liên tục. Perplexity AI cung cấp một lựa chọn đầy hấp dẫn bằng cách giới thiệu một lớp phân tích thông minh, được điều khiển bởi AI. Nó hoạt động như một công cụ phân tích HTML thông minh, có khả năng hiểu ý nghĩa ngữ nghĩa của nội dung thay vì chỉ vị trí cấu trúc của nó.

  • Khả năng thích ứng với thay đổi trang web: Perplexity AI có thể thích nghi với các trang web động, nơi mà bố cục và các yếu tố dữ liệu thường xuyên thay đổi. Thay vì sử dụng các bộ chọn cố định, bạn có thể mô tả dữ liệu bạn cần bằng ngôn ngữ tự nhiên, và Perplexity AI có thể nhận diện nó ngay cả khi cấu trúc HTML cơ bản thay đổi.
  • Trích xuất dữ liệu đơn giản: Nó giảm quy trình trích xuất dữ liệu từ nội dung HTML không có cấu trúc xuống thành một yêu cầu đơn giản. Điều này loại bỏ nhu cầu phải phân tích dữ liệu thủ công và các biểu thức chính quy phức tạp, làm cho quy trình thu thập dữ liệu trở nên dễ dàng và nhanh chóng hơn nhiều.
  • Các kịch bản thu thập dữ liệu nâng cao: Perplexity AI được xây dựng cho các kịch bản thu thập dữ liệu web nâng cao, có khả năng khám phá và phát hiện các trang web. Điều này có thể hướng dẫn quy trình thu thập dữ liệu, đặc biệt cho các trang web lớn và phức tạp, bằng cách thực hiện các tìm kiếm được điều khiển bởi AI để xác định các trang hoặc phần liên quan.
  • Giảm thiểu bảo trì: Bằng cách tự động hóa việc xác định bộ chọn và thích nghi với các thay đổi cấu trúc, Perplexity AI giảm thiểu đáng kể chi phí bảo trì liên quan đến các công cụ thu thập dữ liệu web truyền thống. Điều này cho phép các nhà phát triển tập trung vào phân tích dữ liệu cấp cao hơn thay vì sửa chữa công cụ thu thập dữ liệu thường xuyên.

Cách Perplexity AI nâng cao việc thu thập dữ liệu truyền thống

Perplexity AI không thay thế nhu cầu lấy nội dung HTML, nhưng nó cách mạng hóa những gì xảy ra sau khi HTML được thu thập. Nó hoạt động như một trung gian thông minh, kết nối khoảng cách giữa nội dung web thô và dữ liệu có cấu trúc. Dưới đây là cách nó nâng cao quy trình làm việc thu thập dữ liệu truyền thống:

  1. Diễn giải nội dung thông minh: Thay vì dựa vào các quy tắc cứng nhắc, Perplexity AI sử dụng khả năng hiểu ngôn ngữ tự nhiên để diễn giải nội dung của một trang web. Bạn có thể yêu cầu nó tìm kiếm các thông tin cụ thể (ví dụ: "giá sản phẩm", "tác giả của bài viết") ngay cả khi các thẻ HTML hoặc lớp của chúng thay đổi. Điều này làm cho quá trình thu thập thông tin trở nên mạnh mẽ hơn trước các bản cập nhật của trang web.

  2. Tạo đầu ra có cấu trúc: Perplexity AI có thể được kích hoạt để trả về dữ liệu đã thu thập ở định dạng có cấu trúc, chẳng hạn như JSON, trực tiếp từ HTML không có cấu trúc. Điều này loại bỏ sự cần thiết của việc phân tích thủ công với các thư viện như BeautifulSoup hoặc biểu thức chính quy, điều có thể mất thời gian và dễ gây lỗi. Bằng cách định nghĩa một mô hình Pydantic hoặc một sơ đồ rõ ràng, bạn có thể hướng dẫn Perplexity AI xuất dữ liệu ở định dạng nhất quán và hữu dụng.

  3. Xử lý nội dung động: Trong khi Perplexity AI không trực tiếp tương tác với nội dung được render bởi JavaScript, nó có thể được tích hợp với các trình duyệt không giao diện (như Selenium hoặc Playwright) để trước tiên render nội dung động. Khi HTML đầy đủ có sẵn, Perplexity AI có thể nhanh chóng thu thập dữ liệu từ đó, đơn giản hóa quy trình phân tích sau khi render.

  4. Khôi phục lỗi thông minh: Khi một trình thu thập truyền thống gặp cấu trúc HTML không mong đợi, nó thường thất bại. Với Perplexity AI, nếu một bộ chọn cụ thể không hoạt động, AI có thể suy luận dữ liệu mong muốn dựa trên ngữ cảnh và sự hiểu biết về ngôn ngữ tự nhiên, dẫn đến việc xử lý lỗi linh hoạt hơn và tỷ lệ thành công trong thu thập dữ liệu cao hơn.

  5. Tích hợp với proxy và chống phát hiện: Perplexity AI hoạt động tốt nhất khi nhận được HTML sạch và có thể truy cập. Điều này có nghĩa là nó có thể được tích hợp liền mạch với các dịch vụ proxy (như Scrapeless, Oxylabs hoặc Brightdata) để vượt qua chặn IP, CAPTCHA, và các cơ chế chống thu thập khác. Proxy xử lý việc truy cập, và Perplexity AI xử lý việc thu thập thông minh, tạo ra một sự kết hợp mạnh mẽ.

Bằng cách chuyển giao nhiệm vụ phân tích HTML phức tạp và dễ bị hỏng cho một AI, các nhà phát triển có thể xây dựng những giải pháp thu thập dữ liệu web hiệu quả hơn, có quy mô hơn và bền vững hơn. Perplexity AI biến việc thu thập dữ liệu web từ một quy trình dựa trên quy tắc, dễ bị tổn thương thành một chiến lược thu thập dữ liệu thông minh, thích ứng và mạnh mẽ hơn nhiều.

10 Giải pháp chi tiết cho thu thập dữ liệu web với Perplexity AI trong Python

Tích hợp Perplexity AI vào quy trình thu thập dữ liệu web Python của bạn có thể nâng cao đáng kể khả năng của nó, khiến các trình thu thập của bạn mạnh mẽ hơn, thông minh hơn và ít có khả năng bị hỏng hơn. Dưới đây là mười giải pháp chi tiết, kèm theo mô tả và ví dụ mã Python, để hướng dẫn bạn sử dụng Perplexity AI cho các thách thức thu thập dữ liệu web khác nhau.

1. Truy xuất HTML cơ bản với Perplexity AI

Giải pháp nền tảng này cho thấy cách lấy nội dung HTML thô và sau đó sử dụng Perplexity AI để trích xuất thông tin cụ thể dựa trên các gợi ý ngôn ngữ tự nhiên. Phương pháp này bỏ qua sự cần thiết phải xác định bộ chọn thủ công cho các điểm dữ liệu đơn giản.

  • Mô tả: Quy trình liên quan đến việc sử dụng một thư viện Python tiêu chuẩn như requests để lấy nội dung HTML của một trang web. Sau khi HTML được lấy, nó được đưa vào Perplexity AI thông qua API của nó, cùng với một gợi ý ngôn ngữ tự nhiên hướng dẫn AI về dữ liệu cần trích xuất. Perplexity AI sau đó xử lý HTML và trả về thông tin đã yêu cầu, thường là ở định dạng có cấu trúc nếu được chỉ định.

  • Ví dụ mã/Bước thực hiện:

    1. Cài đặt các thư viện cần thiết:

      bash Copy
      pip install openai requests
    2. Thiết lập khóa API Perplexity AI của bạn: Nhận khóa API từ bảng điều khiển Perplexity và thiết lập nó làm biến môi trường hoặc trực tiếp trong mã của bạn (cho mục đích phát triển).

    3. Viết mã Python:

      python Copy
      import requests
      from openai import OpenAI
      import os
      
      # Thiết lập khóa API Perplexity AI của bạn
      # Khuyến nghị thiết lập điều này làm biến môi trường cho sản xuất
      # os.environ["PERPLEXITY_API_KEY"] = "YOUR_PERPLEXITY_API_KEY"
      perplexity_api_key = os.getenv("PERPLEXITY_API_KEY", "YOUR_PERPLEXITY_API_KEY")
      
      # Khởi tạo client Perplexity AI (API tương thích với OpenAI)
      client = OpenAI(api_key=perplexity_api_key, base_url="https://api.perplexity.ai")
      
      def fetch_html(url):
          """Lấy nội dung HTML của một URL nhất định."""
          try:
              response = requests.get(url, timeout=10)
              response.raise_for_status()  # Ném ra một HTTPError cho các phản hồi xấu (4xx hoặc 5xx)
              return response.text
Copy
Ngoại trừ requests.exceptions.RequestException như e:
                print(f"Lỗi khi truy cập URL {url}: {e}")
                return None

        def extract_data_with_perplexity(html_content, prompt):
            """Sử dụng Perplexity AI để trích xuất dữ liệu từ HTML dựa trên một hướng dẫn."""
            if not html_content:
                return "Không có nội dung HTML để xử lý."
            
            try:
                # Xây dựng thông điệp cho Perplexity AI
                messages = [
                    {"role": "system", "content": "Bạn là một trợ lý AI trích xuất thông tin từ nội dung HTML dựa trên hướng dẫn của người dùng. Cung cấp dữ liệu đã được trích xuất theo định dạng ngắn gọn."},
                    {"role": "user", "content": f"Nội dung HTML: {html_content}\n\nHướng dẫn: {prompt}"}
                ]
                
                chat_completion = client.chat.completions.create(
                    model="sonar-small-online", # Hoặc "sonar-medium-online" cho các nhiệm vụ phức tạp hơn
                    messages=messages,
                    max_tokens=500
                )
                return chat_completion.choices[0].message.content
            except Exception as e:
                print(f"Lỗi khi trích xuất dữ liệu với Perplexity AI: {e}")
                return None

        # Ví dụ sử dụng
        target_url = "https://www.scrapingcourse.com/ecommerce/product/ajax-full-zip-sweatshirt/"
        html = fetch_html(target_url)

        if html:
            extraction_prompt = "Trích xuất tên sản phẩm, giá và mô tả. Trình bày chúng rõ ràng."
            extracted_info = extract_data_with_perplexity(html, extraction_prompt)
            print("\n--- Thông tin đã được trích xuất ---")
            print(extracted_info)

Giải pháp này chứng minh nguyên tắc cơ bản của việc sử dụng Perplexity AI để giải nghĩa HTML thô và trích xuất thông tin mong muốn, giúp đơn giản hóa giai đoạn trích xuất dữ liệu ban đầu bằng cách rời xa việc phân tích dựa trên các bộ chọn không ổn định.

### 2. Trích xuất dữ liệu có cấu trúc sử dụng mô hình Pydantic

Giải pháp này tập trung vào việc tận dụng Perplexity AI để trả về dữ liệu đã được trích xuất theo định dạng có cấu trúc được định nghĩa trước bằng mô hình Pydantic. Điều này đảm bảo tính nhất quán của dữ liệu và đơn giản hóa quy trình xử lý sau này.

*   **Mô tả:** Thay vì nhận văn bản tự do từ Perplexity AI, chúng ta có thể hướng dẫn đầu ra của nó phù hợp với một sơ đồ cụ thể được định nghĩa bởi `BaseModel` của Pydantic. Điều này đặc biệt hữu ích khi bạn cần trích xuất nhiều trường (ví dụ: tên sản phẩm, giá, đánh giá) và muốn chúng được tổ chức gọn gàng thành một đối tượng Python hoặc cấu trúc JSON. Thư viện `instructor`, đóng gói API OpenAI (và do đó API tương thích với Perplexity AI), rất tuyệt vời cho mục đích này, cho phép đầu ra có cấu trúc với kiểu được gợi ý.

*   **Ví dụ mã/ Các bước:**

    1.  **Cài đặt các thư viện cần thiết:**

        ```bash
        pip install openai requests pydantic instructor
        ```

    2.  **Định nghĩa mô hình Pydantic của bạn:** Tạo một `BaseModel` đại diện cho cấu trúc dữ liệu mà bạn muốn trích xuất.

    3.  **Chỉnh sửa hàm trích xuất:** Sử dụng thư viện `instructor` để tích hợp mô hình Pydantic với lời gọi API của Perplexity AI.

        ```python
        import requests
        from openai import OpenAI
        import os
        from pydantic import BaseModel
        import instructor # Nhập thư viện instructor

        # Thiết lập khóa API của Perplexity AI
        perplexity_api_key = os.getenv("PERPLEXITY_API_KEY", "YOUR_PERPLEXITY_API_KEY")

        # Vá client OpenAI với instructor để có đầu ra có cấu trúc
        client = instructor.patch(OpenAI(api_key=perplexity_api_key, base_url="https://api.perplexity.ai"))

        # 1. Định nghĩa một mô hình Pydantic cho cấu trúc đầu ra mong muốn
        class ProductDetails(BaseModel):
            name: str
            price: str
            description: str
            # Thêm nhiều trường hơn nếu cần, ví dụ: rating: float, availability: bool

        def fetch_html(url):
            """Lấy nội dung HTML của một URL cho trước."""
            try:
                response = requests.get(url, timeout=10)
                response.raise_for_status()
                return response.text
            except requests.exceptions.RequestException as e:
                print(f"Lỗi khi truy cập URL {url}: {e}")
                return None

        def extract_structured_data_with_perplexity(html_content, target_model: BaseModel):
            """Sử dụng Perplexity AI để trích xuất dữ liệu có cấu trúc từ HTML dựa trên mô hình Pydantic."""
            if not html_content:
                return None
            
            try:
                # Tham số response_model cho biết cho instructor để phân tích đầu ra thành mô hình Pydantic của chúng ta
                extracted_data = client.chat.completions.create(
                    model="sonar-small-online", # Hoặc "sonar-medium-online"
                    response_model=target_model,
                    messages=[
{"role": "system", "content": "Bạn là một trợ lý AI có khả năng trích xuất thông tin cấu trúc từ nội dung HTML. Trích xuất các chi tiết được yêu cầu vào schema JSON được cung cấp."},
{"role": "user", "content": f"Nội dung HTML: {html_content}\n\nTrích xuất các chi tiết sản phẩm sau: tên, giá và mô tả."}
```python
print(f"Lỗi khi lấy URL động {url} bằng Selenium: {e}")
                return None

        def extract_structured_data_with_perplexity(html_content, target_model: BaseModel):
            """Sử dụng Perplexity AI để trích xuất dữ liệu có cấu trúc từ HTML dựa trên mô hình Pydantic."""
            if not html_content:
                return None
            
            try:
                extracted_data = client.chat.completions.create(
                    model="sonar-small-online",
                    response_model=target_model,
                    messages=[
                        {"role": "system", "content": "Bạn là một trợ lý AI có nhiệm vụ trích xuất thông tin có cấu trúc từ nội dung HTML. Trích xuất các chi tiết yêu cầu vào sơ đồ JSON được cung cấp."},
                        {"role": "user", "content": f"Nội dung HTML: {html_content}\n\nTrích xuất các chi tiết sản phẩm sau: tên, giá và mô tả."}
                    ]
                )
                return extracted_data
            except Exception as e:
                print(f"Lỗi khi trích xuất dữ liệu có cấu trúc bằng Perplexity AI: {e}")
                return None

        # Ví dụ sử dụng (sử dụng một trang động giả định)
        # Lưu ý: Thay bằng một trang động thực tế để thử nghiệm
        dynamic_target_url = "https://www.example.com/dynamic-product-page" # Thay bằng một URL động thực tế
        print(f"Đang lấy nội dung động từ: {dynamic_target_url}")
        dynamic_html = fetch_dynamic_html(dynamic_target_url)

        if dynamic_html:
            print("Đã lấy HTML động thành công. Đang chuyển đến Perplexity AI...")
            product_info = extract_structured_data_with_perplexity(dynamic_html, ProductDetails)
            if product_info:
                print("\n--- Chi tiết sản phẩm đã trích xuất từ trang động ---")
                print(f"Tên: {product_info.name}")
                print(f"Giá: {product_info.price}")
                print(f"Mô tả: {product_info.description}")
                print(f"Đầu ra JSON: {product_info.model_dump_json(indent=2)}")
            else:
                print("Không thể trích xuất thông tin sản phẩm từ trang động.")
        else:
            print("Không thể lấy HTML động.")

    Giải pháp này giải quyết hiệu quả nội dung động bằng cách đảm bảo rằng Perplexity AI nhận được HTML đã được render hoàn chỉnh, cho phép nó áp dụng khả năng phân tích thông minh của mình ngay cả đối với các trang web phức tạp, dựa vào JavaScript. Sự kết hợp này rất quan trọng cho việc trích xuất dữ liệu web toàn diện trong môi trường web ngày nay.




### 4. Vượt qua các biện pháp chống thu thập dữ liệu bằng cách sử dụng Proxy và Perplexity AI

Nhiều trang web áp dụng các cơ chế chống thu thập dữ liệu như chặn IP, CAPTCHA và giới hạn tần suất. Kết hợp Perplexity AI với các giải pháp proxy mạnh mẽ giúp vượt qua những rào cản này, đảm bảo luồng dữ liệu không bị gián đoạn.

*   **Mô tả:** Trong khi Perplexity AI xuất sắc trong việc phân tích, nó không xử lý được các thách thức ở cấp độ mạng. Đây là lúc dịch vụ proxy trở nên cần thiết. Bằng cách chuyển hướng các yêu cầu của bạn qua một mạng lưới các proxy dân cư hoặc datacenter, bạn có thể che giấu địa chỉ IP của mình, phân phối yêu cầu và vượt qua các hạn chế địa lý. Khi proxy thành công lấy trang web, nội dung HTML của nó sẽ được gửi tới Perplexity AI để trích xuất thông minh. Sự phân chia nhiệm vụ này - proxy để truy cập, AI để phân tích - tạo ra một kiến trúc thu thập dữ liệu hiệu quả và bền bỉ.

*   **Ví dụ mã/Các bước:**

    1.  **Cài đặt các thư viện cần thiết:**

        ```bash
        pip install openai requests pydantic instructor
        ```

    2.  **Thiết lập khóa API Perplexity AI và thông tin xác thực proxy:** Đối với ví dụ này, chúng ta sẽ sử dụng thông tin xác thực giả cho dịch vụ proxy. Thay thế `YOUR_PROXY_USERNAME` và `YOUR_PROXY_PASSWORD` bằng thông tin thực tế từ một nhà cung cấp như Oxylabs hoặc Brightdata.

    3.  **Viết kịch bản Python:**

        ```python
        import requests
        from openai import OpenAI
        import os
        from pydantic import BaseModel
        import instructor

        # Thiết lập khóa API Perplexity AI của bạn
        perplexity_api_key = os.getenv("PERPLEXITY_API_KEY", "YOUR_PERPLEXITY_API_KEY")

        # Chỉnh sửa client OpenAI với instructor cho đầu ra có cấu trúc
        client = instructor.patch(OpenAI(api_key=perplexity_api_key, base_url="https://api.perplexity.ai"))

        # Thông tin xác thực proxy (thay bằng thông tin xác thực của bạn)
        PROXY_USERNAME = os.getenv("PROXY_USERNAME", "YOUR_PROXY_USERNAME")
        PROXY_PASSWORD = os.getenv("PROXY_PASSWORD", "YOUR_PROXY_PASSWORD")

        class ProductDetails(BaseModel):
            name: str
            price: str
            description: str

        def fetch_html_with_proxy(url):
            """Lấy nội dung HTML của một URL bằng cách sử dụng proxy."""
            proxy_url = f"http://{PROXY_USERNAME}:{PROXY_PASSWORD}@pr.oxylabs.io:7777" # Ví dụ cho proxy dân cư Oxylabs
            proxies = {
vi Copy
"http": proxy_url,
                "https": proxy_url,
            }
            headers = {
                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36",
                "Accept-Language": "en-US,en;q=0.9",
            }
            try:
                response = requests.get(url, headers=headers, proxies=proxies, timeout=15)
                response.raise_for_status()
                return response.text
            except requests.exceptions.RequestException as e:
                print(f"Lỗi khi lấy URL {url} với proxy: {e}")
                return None

        def extract_structured_data_with_perplexity(html_content, target_model: BaseModel):
            """Sử dụng Perplexity AI để trích xuất dữ liệu có cấu trúc từ HTML dựa trên mô hình Pydantic."""
            if not html_content:
                return None
            
            try:
                extracted_data = client.chat.completions.create(
                    model="sonar-small-online",
                    response_model=target_model,
                    messages=[
                        {"role": "system", "content": "Bạn là một trợ lý AI trích xuất thông tin có cấu trúc từ nội dung HTML. Trích xuất các chi tiết được yêu cầu vào sơ đồ JSON đã cung cấp."},
                        {"role": "user", "content": f"Nội dung HTML: {html_content}\n\nTrích xuất các chi tiết sản phẩm sau: tên, giá, và mô tả."}
                    ]
                )
                return extracted_data
            except Exception as e:
                print(f"Lỗi khi trích xuất dữ liệu có cấu trúc với Perplexity AI: {e}")
                return None

        # Ví dụ Sử Dụng
        target_url = "https://www.amazon.com/some-product-page" # Thay thế bằng một URL mục tiêu có thể yêu cầu proxy
        print(f"Đang lấy nội dung từ: {target_url} bằng cách sử dụng proxy...")
        html = fetch_html_with_proxy(target_url)

        if html:
            print("HTML đã được lấy thành công qua proxy. Đang truyền cho Perplexity AI...")
            product_info = extract_structured_data_with_perplexity(html, ProductDetails)
            if product_info:
                print("\n--- Chi Tiết Sản Phẩm Đã Trích Xuất (qua Proxy) ---")
                print(f"Tên: {product_info.name}")
                print(f"Giá: {product_info.price}")
                print(f"Mô tả: {product_info.description}")
                print(f"Đầu Ra JSON: {product_info.model_dump_json(indent=2)}")
            else:
                print("Không thể trích xuất thông tin sản phẩm.")
        else:
            print("Không thể lấy HTML qua proxy.")
        ```

    Giải pháp này nhấn mạnh sự kết hợp giữa mạng proxy và Perplexity AI. Các proxy đảm bảo truy cập đáng tin cậy vào các trang web mục tiêu, ngay cả những trang có biện pháp chống bot nghiêm ngặt, trong khi Perplexity AI xử lý việc trích xuất thông minh dữ liệu từ nội dung đã lấy. Sự kết hợp này rất quan trọng cho các hoạt động c scraping web quy mô lớn và mạnh mẽ, cho phép bạn thu thập dữ liệu từ nhiều nguồn hơn mà không bị chặn hoặc giới hạn tần suất. Để quản lý proxy nâng cao hơn, hãy cân nhắc sử dụng một API c scraping web chuyên dụng như Scrapeless, tích hợp xoay vòng proxy, giải quyết CAPTCHA và khả năng trình duyệt không đầu vào một dịch vụ duy nhất dễ sử dụng.

### 5. Tự Động Hóa Xác Định Chọn Lọc với Perplexity AI

Một trong những khía cạnh dễ gặp phải vấn đề nhất của c scraping web truyền thống là sự phụ thuộc vào các bộ chọn CSS hoặc biểu thức XPath được mã hóa cứng. Giải pháp này chứng minh cách Perplexity AI có thể xác định các bộ chọn một cách động, giúp các công cụ c scraping linh hoạt hơn trước những thay đổi của trang web.

*   **Mô tả:** Thay vì kiểm tra thủ công một trang web để tìm các bộ chọn đúng cho các phần tử như tên sản phẩm hoặc giá, Perplexity AI có thể được yêu cầu với HTML gốc và hỏi để xác định các bộ chọn CSS thích hợp. Khả năng này đặc biệt mạnh mẽ vì nó cho phép công cụ c scraping thích nghi với những thay đổi nhỏ trong bố cục mà không cần thay đổi mã. AI hoạt động như một bộ tạo chọn lọc thông minh, cung cấp các giá trị `str` cần thiết mà sau đó có thể được sử dụng bởi các thư viện như BeautifulSoup để trích xuất chính xác.

*   **Ví dụ Mã/Bước:**

    1.  **Cài đặt các thư viện cần thiết:**

        ```bash
        pip install openai requests pydantic instructor beautifulsoup4
        ```

    2.  **Thiết lập khóa API Perplexity AI của bạn** (như trong các giải pháp trước).

    3.  **Viết script Python:**

        ```python
        import requests
        from openai import OpenAI
        import os
        from pydantic import BaseModel
        import instructor
        from bs4 import BeautifulSoup

        # Thiết lập khóa API Perplexity AI của bạn
        perplexity_api_key = os.getenv("PERPLEXITY_API_KEY", "YOUR_PERPLEXITY_API_KEY")

        # Vá khách hàng OpenAI với instructor cho đầu ra có cấu trúc

client = instructor.patch(OpenAI(api_key=perplexity_api_key, base_url="https://api.perplexity.ai"))

Copy
    # Định nghĩa một mô hình Pydantic cho các bộ chọn mà chúng ta muốn Perplexity xác định
    class ProductSelectors(BaseModel):
        name_selector: str
        price_selector: str
        description_selector: str

    def fetch_html(url):
        """Lấy nội dung HTML của một URL nhất định."""
        try:
            response = requests.get(url, timeout=10)
            response.raise_for_status()
            return response.text
        except requests.exceptions.RequestException as e:
            print(f"Lỗi khi lấy URL {url}: {e}")
            return None

    def get_selectors_with_perplexity(html_content):
        """Sử dụng Perplexity AI để xác định các bộ chọn CSS từ HTML."""
        if not html_content:
            return None
        
        try:
            selectors = client.chat.completions.create(
                model="sonar-small-online",
                response_model=ProductSelectors,
                messages=[
                    {"role": "system", "content": "Bạn là một trợ lý AI xác định các bộ chọn CSS từ nội dung HTML. Cung cấp bộ chọn CSS chính xác nhất cho các phần tử yêu cầu."},
                    {"role": "user", "content": f"Nội dung HTML: {html_content}\n\nXác định các bộ chọn CSS cho tên sản phẩm, giá và mô tả."}
                ]
            )
            return selectors
        except Exception as e:
            print(f"Lỗi khi lấy bộ chọn với Perplexity AI: {e}")
            return None

    def extract_data_with_bs4(html_content, selectors: ProductSelectors):
        """Trích xuất dữ liệu bằng BeautifulSoup và các bộ chọn đã cung cấp."""
        soup = BeautifulSoup(html_content, 'html.parser')
        name = soup.select_one(selectors.name_selector).get_text(strip=True) if soup.select_one(selectors.name_selector) else "N/A"
        price = soup.select_one(selectors.price_selector).get_text(strip=True) if soup.select_one(selectors.price_selector) else "N/A"
        description = soup.select_one(selectors.description_selector).get_text(strip=True) if soup.select_one(selectors.description_selector) else "N/A"
        return {"name": name, "price": price, "description": description}

    # Ví dụ sử dụng
    target_url = "https://www.scrapingcourse.com/ecommerce/product/ajax-full-zip-sweatshirt/"
    html = fetch_html(target_url)

    if html:
        print("HTML đã được lấy. Đang hỏi Perplexity AI về các bộ chọn...")
        product_selectors = get_selectors_with_perplexity(html)
        if product_selectors:
            print("\n--- Bộ chọn đã xác định ---")
            print(f"Bộ chọn Tên: {product_selectors.name_selector}")
            print(f"Bộ chọn Giá: {product_selectors.price_selector}")
            print(f"Bộ chọn Mô tả: {product_selectors.description_selector}")
            
            print("\nTrích xuất dữ liệu bằng BeautifulSoup với các bộ chọn do AI xác định...")
            extracted_data = extract_data_with_bs4(html, product_selectors)
            print("\n--- Dữ liệu sản phẩm đã trích xuất ---")
            print(f"Tên sản phẩm: {extracted_data['name']}")
            print(f"Giá sản phẩm: {extracted_data['price']}")
            print(f"Mô tả sản phẩm: {extracted_data['description']}")
        else:
            print("Không thể lấy bộ chọn từ Perplexity AI.")
    else:
        print("Không thể lấy HTML.")
    
Giải pháp này nâng cao khả năng thích ứng của các trình thu thập dữ liệu của bạn. Bằng cách thu nhận động các bộ chọn, logic thu thập dữ liệu của bạn trở nên ít phụ thuộc vào cấu trúc trang web tĩnh, giảm thiểu bảo trì và cải thiện tuổi thọ của các pipeline trích xuất dữ liệu của bạn. Cách tiếp cận này đặc biệt có giá trị cho việc theo dõi các trang web thường xuyên có cập nhật thiết kế, đảm bảo dòng dữ liệu liên tục mà không cần can thiệp thủ công thường xuyên.

6. Thu thập dữ liệu Web theo thời gian thực với Perplexity AI

Dữ liệu theo thời gian thực rất quan trọng cho nhiều ứng dụng, từ phân tích thị trường chứng khoán đến thông tin cạnh tranh tức thì. Giải pháp này minh họa cách Perplexity AI có thể được tích hợp vào pipeline thu thập dữ liệu theo thời gian thực để cung cấp thông tin ngay lập tức.

  • Mô tả: Thu thập dữ liệu web theo thời gian thực liên quan đến việc liên tục theo dõi các trang web để tìm kiếm thông tin mới hoặc đã được cập nhật và xử lý ngay khi thông tin trở nên khả dụng. Bằng cách kết hợp một cơ chế thu thập dữ liệu nhanh với Perplexity AI, bạn có thể đạt được việc trích xuất và phân tích nội dung mới gần như ngay lập tức. Điều này đặc biệt hữu ích cho việc theo dõi dữ liệu thay đổi nhanh chóng, chẳng hạn như giá cả trực tiếp, tin tức hoặc các xu hướng trên mạng xã hội. Khả năng của Perplexity AI trong việc phân tích và trích xuất thông tin liên quan từ HTML mới thu thập làm cho nó trở thành một thành phần lý tưởng cho một hệ thống như vậy.

  • Ví dụ mã/ Các bước:

    1. Cài đặt các thư viện cần thiết:

      bash Copy
      pip install openai requests pydantic instructor schedule
    2. Thiết lập khóa API Perplexity AI của bạn (như trong các giải pháp trước).

    3. Viết mã Python: Ví dụ này sử dụng thư viện schedule để đơn giản hóa việc mô phỏng việc giám sát theo thời gian thực, nhưng trong môi trường sản xuất, hàng đợi tin nhắn hoặc kiến trúc dựa trên sự kiện sẽ phù hợp hơn.

      python Copy
      import requests
      from openai import OpenAI
      import os
      from pydantic import BaseModel
      import instructor
      import time
      import schedule
      
      # Thiết lập khóa API Perplexity AI của bạn
      perplexity_api_key = os.getenv("PERPLEXITY_API_KEY", "YOUR_PERPLEXITY_API_KEY")
      
      # Cập nhật client OpenAI bằng instructor để đầu ra có cấu trúc
      client = instructor.patch(OpenAI(api_key=perplexity_api_key, base_url="https://api.perplexity.ai"))
      
      class NewsArticle(BaseModel):
          title: str
          author: str
          summary: str
          url: str
      
      def fetch_html(url):
          """Lấy nội dung HTML của một URL đã cho."""
          try:
              response = requests.get(url, timeout=10)
              response.raise_for_status()
              return response.text
          except requests.exceptions.RequestException as e:
              print(f"Error fetching URL {url}: {e}")
              return None
      
      def extract_news_with_perplexity(html_content, article_url):
          """Sử dụng Perplexity AI để trích xuất thông tin bài báo tin tức."""
          if not html_content:
              return None
          
          try:
              extracted_data = client.chat.completions.create(
                  model="sonar-small-online",
                  response_model=NewsArticle,
                  messages=[
                      {"role": "system", "content": "Bạn là một trợ lý AI trích xuất thông tin cấu trúc từ nội dung HTML bài báo tin tức. Trích xuất các chi tiết yêu cầu vào sơ đồ JSON đã cung cấp."},
                      {"role": "user", "content": f"Nội dung HTML: {html_content}\n\nTrích xuất tiêu đề, tác giả và tóm tắt ngắn gọn của bài báo tin tức. URL của bài báo là {article_url}."}
                  ]
              )
              return extracted_data
          except Exception as e:
              print(f"Error extracting news data with Perplexity AI: {e}")
              return None
      
      def real_time_scrape_job(target_url):
          print(f"\n--- Chạy công việc thu thập dữ liệu theo thời gian thực cho {target_url} vào {time.ctime()} ---")
          html = fetch_html(target_url)
          if html:
              news_article = extract_news_with_perplexity(html, target_url)
              if news_article:
                  print("\n--- Bài báo tin tức mới được trích xuất ---")
                  print(f"Tiêu đề: {news_article.title}")
                  print(f"Tác giả: {news_article.author}")
                  print(f"Tóm tắt: {news_article.summary}")
                  print(f"URL: {news_article.url}")
              else:
                  print("Không thể trích xuất thông tin bài báo tin tức.")
          else:
              print("Không thể lấy HTML cho công việc theo thời gian thực.")
      
      # Ví dụ sử dụng: Lên lịch chạy mỗi 5 phút
      # Lưu ý: Thay thế bằng một trang tin tức hoặc blog thực tế để kiểm tra
      news_target_url = "https://www.example.com/latest-news" # Thay thế bằng một URL thực tế và thường xuyên được cập nhật
      
      # Lên lịch công việc chạy mỗi 5 phút
      # schedule.every(5).minutes.do(real_time_scrape_job, news_target_url)
      
      print(f"Bắt đầu thu thập dữ liệu theo thời gian thực cho {news_target_url}. Nhấn Ctrl+C để dừng lại.")
      # while True:
      #     schedule.run_pending()
      #     time.sleep(1)
      
      # Để minh họa, chạy một lần ngay lập tức
      real_time_scrape_job(news_target_url)

Giải pháp này thể hiện cách Perplexity AI có thể là một thành phần mạnh mẽ trong một pipeline dữ liệu thời gian thực. Bằng cách tự động hóa việc trích xuất thông tin có cấu trúc từ nội dung web thay đổi nhanh chóng, nó cho phép các doanh nghiệp phản ứng nhanh với thông tin mới, duy trì danh sách dữ liệu cập nhật và giành được lợi thế cạnh tranh. Sự kết hợp giữa việc lấy dữ liệu hiệu quả và khả năng phân tích AI thông minh đảm bảo rằng nỗ lực thu thập dữ liệu thời gian thực của bạn mang lại những hiểu biết có giá trị, có thể hành động mà không bị trì hoãn đáng kể.

7. Thu thập dữ liệu nhiều trang và phân trang với Perplexity AI

Nhiều trang web hiển thị dữ liệu trên nhiều trang, yêu cầu xử lý phân trang. Giải pháp này cho thấy cách Perplexity AI có thể hỗ trợ trong việc điều hướng và trích xuất dữ liệu từ nội dung có phân trang.

  • Mô tả: Khi thu thập dữ liệu trải rộng trên nhiều trang (ví dụ: kết quả tìm kiếm, danh sách sản phẩm), một trình thu thập dữ liệu cần xác định và theo dõi các liên kết phân trang. Perplexity AI có thể được sử dụng không chỉ để trích xuất dữ liệu từ mỗi trang mà còn để xác định một cách thông minh URL của trang tiếp theo hoặc các điều khiển phân trang. Điều này làm cho logic phân trang trở nên mạnh mẽ hơn, vì AI có thể thích ứng với các mẫu phân trang khác nhau (ví dụ: nút 'Tiếp theo', số trang, chức năng 'Tải thêm') dựa trên các hướng dẫn bằng ngôn ngữ tự nhiên.

  • Ví dụ/Bước mã:

    1. Cài đặt các thư viện cần thiết:

      bash Copy
      pip install openai requests pydantic instructor beautifulsoup4
    2. Thiết lập khóa API Perplexity AI của bạn (như trong các giải pháp trước).

    3. Viết script Python:

      python Copy
      import requests
      from openai import OpenAI
      import os
      from pydantic import BaseModel
      import instructor
      from bs4 import BeautifulSoup
      
      # Thiết lập khóa API Perplexity AI của bạn
      perplexity_api_key = os.getenv("PERPLEXITY_API_KEY", "YOUR_PERPLEXITY_API_KEY")
      
      # Thêm chức năng instructor vào client OpenAI để có đầu ra có cấu trúc
      client = instructor.patch(OpenAI(api_key=perplexity_api_key, base_url="https://api.perplexity.ai"))
      
      class ProductSummary(BaseModel):
          title: str
          price: str
          link: str
      
      class PaginationInfo(BaseModel):
          next_page_url: str | None = None
      
      def fetch_html(url):
          """Thu thập nội dung HTML của một URL nhất định."""
          try:
              response = requests.get(url, timeout=10)
              response.raise_for_status()
              return response.text
          except requests.exceptions.RequestException as e:
              print(f"Có lỗi khi thu thập URL {url}: {e}")
              return None
      
      def extract_products_and_pagination(html_content, current_url):
          """Sử dụng Perplexity AI để trích xuất tóm tắt sản phẩm và URL trang tiếp theo."""
          if not html_content:
              return [], None
          
          try:
              # Trích xuất tóm tắt sản phẩm
              products_prompt = "Trích xuất tiêu đề, giá và liên kết trực tiếp cho mỗi sản phẩm được liệt kê trên trang này. Cung cấp dưới dạng danh sách các đối tượng JSON."
              products_raw = client.chat.completions.create(
                  model="sonar-small-online",
                  messages=[
                      {"role": "system", "content": "Bạn là một trợ lý AI trích xuất thông tin có cấu trúc từ nội dung HTML. Trích xuất các chi tiết yêu cầu vào một mảng JSON của các đối tượng."},
                      {"role": "user", "content": f"Nội dung HTML: {html_content}\n\nHướng dẫn: {products_prompt}"}
                  ],
                  response_model=list[ProductSummary]
              )
      
              # Xác định URL của trang tiếp theo
              pagination_prompt = f"Từ HTML đã cho, xác định URL cho trang tiếp theo của kết quả. Nếu không có trang tiếp theo, hãy trả về null. URL của trang hiện tại là {current_url}."
              pagination_info = client.chat.completions.create(
                  model="sonar-small-online",
                  messages=[
                      {"role": "system", "content": "Bạn là một trợ lý AI xác định các liên kết phân trang từ nội dung HTML."},
                      {"role": "user", "content": f"Nội dung HTML: {html_content}\n\nHướng dẫn: {pagination_prompt}"}
                  ],
                  response_model=PaginationInfo
              )
              
              return products_raw, pagination_info.next_page_url
          except Exception as e:
              print(f"Có lỗi khi trích xuất dữ liệu hoặc phân trang với Perplexity AI: {e}")
              return [], None
      
      # Ví dụ Sử dụng
      base_url = "https://www.example.com/search-results?page=" # Thay thế bằng một URL phân trang thực
      current_page = 1
      all_products = []
      next_url = f"{base_url}{current_page}"
      
      print("Bắt đầu thu thập dữ liệu nhiều trang...")
      while next_url and current_page <= 3: # Giới hạn trong 3 trang để làm ví dụ
          print(f"Đang thu thập trang: {next_url}")
Copy
```python
html = fetch_html(next_url)
            if html:
                products_on_page, next_page_link = extract_products_and_pagination(html, next_url)
                all_products.extend(products_on_page)
                print(f"Đã tìm thấy {len(products_on_page)} sản phẩm trên trang {current_page}.")
                next_url = next_page_link
                current_page += 1
            else:
                print(f"Không thể lấy HTML cho {next_url}. Dừng lại.")
                break

        print("\n--- Tất cả sản phẩm đã trích xuất ---")
        for product in all_products:
            print(f"Tiêu đề: {product.title}, Giá: {product.price}, Liên kết: {product.link}")
        print(f"Tổng số sản phẩm đã trích xuất: {len(all_products)}")
        ```

    Giải pháp này cho thấy cách mà Perplexity AI có thể đơn giản hóa nhiệm vụ phức tạp của việc thu thập dữ liệu từ nhiều trang. Bằng cách nhận diện một cách thông minh cả dữ liệu và liên kết phân trang tiếp theo, nó giảm thiểu nhu cầu về logic tùy chỉnh cho từng sơ đồ phân trang độc đáo của từng trang web, làm cho các trình thu thập dữ liệu của bạn trở nên thích ứng và hiệu quả hơn cho việc thu thập dữ liệu quy mô lớn. Đây là một bước tiến quan trọng trong việc xây dựng các tác nhân thu thập dữ liệu tự động thực sự có khả năng điều hướng và trích xuất thông tin từ toàn bộ trang web.

### 8. Tích hợp Perplexity AI với Cloud Functions để thu thập dữ liệu có thể mở rộng

Đối với các tác vụ thu thập dữ liệu quy mô lớn, theo sự kiện hoặc theo lịch trình, việc tích hợp Perplexity AI với các chức năng điện toán đám mây không có máy chủ (ví dụ: AWS Lambda, Google Cloud Functions, Azure Functions) mang lại khả năng mở rộng và hiệu quả chi phí to lớn.

*   **Mô tả:** Các chức năng điện toán đám mây cho phép bạn chạy mã phản hồi với các sự kiện (như một mục mới xuất hiện trong hàng đợi hoặc một bộ đếm theo lịch) mà không cần cung cấp hoặc quản lý máy chủ. Bằng cách triển khai logic thu thập dữ liệu sử dụng Perplexity AI trong một chức năng điện toán đám mây, bạn có thể tạo ra các giải pháp thu thập dữ liệu có khả năng mở rộng cao và hiệu quả về chi phí. Mỗi lần gọi chức năng có thể xử lý một tác vụ thu thập dữ liệu đơn lẻ, tận dụng Perplexity AI để trích xuất dữ liệu thông minh, và tự động mở rộng để đáp ứng nhu cầu. Kiến trúc này rất lý tưởng cho việc xử lý một lượng lớn URL hoặc theo dõi liên tục nhiều trang web.

*   **Ví dụ/Một số bước:**

    1.  **Điều kiện tiên quyết:**
        *   Tài khoản AWS, Google Cloud hoặc Azure.
        *   Kiến thức về việc triển khai các chức năng không có máy chủ.
        *   Khóa API Perplexity AI được cấu hình một cách an toàn (ví dụ: thông qua các biến môi trường trong chức năng điện toán đám mây).

    2.  **Cài đặt thư viện cần thiết (cho phát triển địa phương và đóng gói):**

        ```bash
        pip install openai requests pydantic instructor
        ```

    3.  **Ví dụ (AWS Lambda với Python):**

        Tạo tệp `lambda_function.py`:

        ```python
        import json
        import os
        import requests
        from openai import OpenAI
        from pydantic import BaseModel
        import instructor

        # Khởi tạo khách hàng Perplexity AI
        perplexity_api_key = os.getenv("PERPLEXITY_API_KEY")
        if not perplexity_api_key:
            raise ValueError("Biến môi trường PERPLEXITY_API_KEY chưa được thiết lập.")

        client = instructor.patch(OpenAI(api_key=perplexity_api_key, base_url="https://api.perplexity.ai"))

        class ProductDetails(BaseModel):
            name: str
            price: str
            description: str

        def fetch_html(url):
            """Lấy nội dung HTML của một URL nhất định."""
            try:
                response = requests.get(url, timeout=10)
                response.raise_for_status()
                return response.text
            except requests.exceptions.RequestException as e:
                print(f"Lỗi khi lấy URL {url}: {e}")
                return None

        def extract_structured_data_with_perplexity(html_content, target_model: BaseModel):
            """Sử dụng Perplexity AI để trích xuất dữ liệu có cấu trúc từ HTML dựa trên mô hình Pydantic."""
            if not html_content:
                return None
            
            try:
                extracted_data = client.chat.completions.create(
                    model="sonar-small-online",
                    response_model=target_model,
                    messages=[
                        {"role": "system", "content": "Bạn là một trợ lý AI trích xuất thông tin có cấu trúc từ nội dung HTML. Hãy trích xuất các chi tiết yêu cầu vào schema JSON được cung cấp."},
                        {"role": "user", "content": f"Nội dung HTML: {html_content}\n\nTrích xuất các chi tiết sản phẩm sau: tên, giá, và mô tả."}
                    ]
                )
                return extracted_data
            except Exception as e:
                print(f"Lỗi khi trích xuất dữ liệu có cấu trúc với Perplexity AI: {e}")
                return None

        def lambda_handler(event, context):
            """Biến xử lý hàm AWS Lambda."""
            print(f"Nhận sự kiện: {json.dumps(event)}")
            
            # Mong đợi 'url' trong payload sự kiện
vi Copy
target_url = event.get("url")
            if not target_url:
                return {
                    "statusCode": 400,
                    "body": json.dumps({"message": "Thiếu 'url' trong payload sự kiện"})
                }

            html = fetch_html(target_url)
            if html:
                product_info = extract_structured_data_with_perplexity(html, ProductDetails)
                if product_info:
                    return {
                        "statusCode": 200,
                        "body": product_info.model_dump_json(indent=2)
                    }
                else:
                    return {
                        "statusCode": 500,
                        "body": json.dumps({"message": "Không thể trích xuất thông tin sản phẩm."})
                    }
            else:
                return {
                    "statusCode": 500,
                    "body": json.dumps({"message": "Không thể lấy HTML."})
                }
        ```

    4.  **Các bước triển khai (Chung):**
        *   Đóng gói `lambda_function.py` của bạn cùng với tất cả các phụ thuộc (bao gồm `openai`, `requests`, `pydantic`, `instructor`) vào một gói triển khai (ví dụ: một tệp `.zip`).
        *   Tải gói lên nhà cung cấp đám mây mà bạn chọn (ví dụ: AWS Lambda).
        *   Cấu hình chức năng với bộ nhớ, thời gian chờ và biến môi trường phù hợp (đặc biệt là `PERPLEXITY_API_KEY`).
        *   Thiết lập các kích hoạt (ví dụ: API Gateway cho yêu cầu HTTP, SQS cho xử lý dựa trên hàng đợi, EventBridge cho các tác vụ theo lịch).

    Cách tiếp cận không máy chủ này cho phép bạn xây dựng các giải pháp trích xuất dữ liệu web có khả năng mở rộng cao, tiết kiệm chi phí và hướng theo sự kiện. Bằng cách chuyển giao việc thực thi cho các chức năng đám mây, bạn chỉ phải trả tiền cho thời gian tính toán thực tế được sử dụng, điều này làm cho nó lý tưởng cho khối lượng công việc biến động và việc thu thập dữ liệu quy mô lớn. Năng lực phân tích thông minh của Perplexity AI trong kiến trúc này đảm bảo rằng ngay cả với khối lượng cao, dữ liệu trích xuất vẫn chính xác và có cấu trúc.



### 9. Xử lý lỗi và độ bền trong việc Scraping với Perplexity AI

Xây dựng các công cụ trích xuất dữ liệu web bền vững yêu cầu xử lý lỗi tổng quát để quản lý một cách duyên dáng các vấn đề về mạng, thay đổi trang web và lỗi API. Giải pháp này phác thảo các chiến lược để làm cho các công cụ trích xuất dữ liệu được hỗ trợ bởi Perplexity AI bền vững hơn.

*   **Mô tả:** Ngay cả với Perplexity AI, các vấn đề không mong đợi có thể xảy ra trong quá trình trích xuất dữ liệu web. Việc triển khai xử lý lỗi đúng cách đảm bảo rằng công cụ trích xuất của bạn không bị sập và có thể phục hồi hoặc ghi lại các lỗi một cách hiệu quả. Điều này bao gồm việc xử lý lỗi HTTP, thời gian chờ mạng, lỗi API của Perplexity AI, và các trường hợp mà AI có thể không trích xuất dữ liệu như mong muốn. Các chiến lược bao gồm cơ chế thử lại, phân tích dự phòng và ghi chép chi tiết.

*   **Ví dụ/Thao tác mã:**

    1.  **Cài đặt các thư viện cần thiết:**

        ```bash
        pip install openai requests pydantic instructor tenacity
        ```

    2.  **Thiết lập khóa API của Perplexity AI** (như trong các giải pháp trước).

    3.  **Viết kịch bản Python:** Ví dụ này kết hợp `tenacity` cho logic thử lại mạnh mẽ và xử lý lỗi toàn diện hơn.

        ```python
        import requests
        from openai import OpenAI
        import os
        from pydantic import BaseModel
        import instructor
        from tenacity import retry, stop_after_attempt, wait_fixed, retry_if_exception_type
        import logging

        # Cấu hình ghi chép
        logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s")

        # Đặt khóa API của Perplexity AI
        perplexity_api_key = os.getenv("PERPLEXITY_API_KEY", "YOUR_PERPLEXITY_API_KEY")

        # Đắp OpenAI client bằng instructor để có đầu ra có cấu trúc
        client = instructor.patch(OpenAI(api_key=perplexity_api_key, base_url="https://api.perplexity.ai"))

        class ProductDetails(BaseModel):
            name: str | None = None
            price: str | None = None
            description: str | None = None

        # Decorator thử lại cho các yêu cầu mạng
        @retry(stop=stop_after_attempt(3), wait=wait_fixed(2), retry=retry_if_exception_type(requests.exceptions.RequestException))
        def fetch_html_robust(url):
            """Lấy nội dung HTML của một URL cho trước với các lần thử lại."""
            logging.info(f"Đang cố gắng lấy HTML từ {url}")
            response = requests.get(url, timeout=10)
            response.raise_for_status()
            return response.text

        # Decorator thử lại cho các cuộc gọi Perplexity AI
        @retry(stop=stop_after_attempt(3), wait=wait_fixed(5), retry=retry_if_exception_type(Exception))
        def extract_structured_data_robust(html_content, target_model: BaseModel):
            """Sử dụng Perplexity AI để trích xuất dữ liệu có cấu trúc từ HTML với các lần thử lại."""
            if not html_content:
                logging.warning("Không có nội dung HTML nào được cung cấp để trích xuất.")
                return None

Here is the translated text into Vietnamese:

python Copy
logging.info("Đang cố gắng trích xuất dữ liệu với Perplexity AI.")
            extracted_data = client.chat.completions.create(
                model="sonar-small-online",
                response_model=target_model,
                messages=[
                    {"role": "system", "content": "Bạn là một trợ lý AI giúp trích xuất thông tin có cấu trúc từ nội dung HTML. Trích xuất các chi tiết yêu cầu vào định dạng JSON được cung cấp."},
                    {"role": "user", "content": f"Nội dung HTML: {html_content}\n\nTrích xuất các chi tiết sản phẩm sau: tên, giá và mô tả."}
                ]
            )
            return extracted_data

        # Ví dụ Sử Dụng
        target_url = "https://www.scrapingcourse.com/ecommerce/product/ajax-full-zip-sweatshirt/"
        # Ví dụ về một URL có thể gặp lỗi (ví dụ: 404 hoặc lỗi mạng)
        # failing_url = "https://www.example.com/non-existent-page"

        print(f"\n--- Đang xử lý {target_url} ---")
        try:
            html = fetch_html_robust(target_url)
            if html:
                product_info = extract_structured_data_robust(html, ProductDetails)
                if product_info:
                    print("\n--- Chi tiết sản phẩm đã trích xuất ---")
                    print(f"Tên: {product_info.name}")
                    print(f"G giá: {product_info.price}")
                    print(f"Mô tả: {product_info.description}")
                else:
                    logging.error("Perplexity AI đã thất bại trong việc trích xuất dữ liệu sau nhiều lần thử.")
            else:
                logging.error("Không thể lấy HTML sau nhiều lần thử.")
        except Exception as e:
            logging.critical(f"Lỗi nghiêm trọng trong quá trình cào dữ liệu cho {target_url}: {e}")

        # Ví dụ với một URL có thể gặp lỗi (bỏ chú thích để kiểm tra)
        # print(f"\n--- Đang xử lý {failing_url} ---")
        # try:
        #     html_failing = fetch_html_robust(failing_url)
        #     if html_failing:
        #         product_info_failing = extract_structured_data_robust(html_failing, ProductDetails)
        #         if product_info_failing:
        #             print("\n--- Chi tiết sản phẩm đã trích xuất (URL gặp lỗi) ---")
        #             print(f"Tên: {product_info_failing.name}")
        #             print(f"G giá: {product_info_failing.price}")
        #             print(f"Mô tả: {product_info_failing.description}")
        #         else:
        #             logging.error("Perplexity AI đã thất bại trong việc trích xuất dữ liệu từ URL gặp lỗi sau nhiều lần thử.")
        #     else:
        #         logging.error("Không thể lấy HTML từ URL gặp lỗi sau nhiều lần thử.")
        # except Exception as e:
        #     logging.critical(f"Lỗi nghiêm trọng trong quá trình cào dữ liệu cho {failing_url}: {e}")
        ```

Giải pháp này nhấn mạnh tầm quan trọng của việc xây dựng tính mạnh mẽ vào hoạt động cào dữ liệu của bạn. Bằng cách triển khai cơ chế thử lại, xử lý lỗi toàn diện và ghi nhật ký chi tiết, bạn có thể tạo ra các trình cào dữ liệu sử dụng Perplexity AI đáng tin cậy hơn và ít bị gián đoạn hơn. Điều này rất quan trọng để duy trì các luồng dữ liệu liên tục và đảm bảo tính toàn vẹn của dữ liệu thu thập được, ngay cả trong điều kiện môi trường web không ổn định.

### 10. Biến đổi và làm sạch dữ liệu nâng cao với Perplexity AI

Dữ liệu trích xuất thô thường cần được biến đổi và làm sạch thêm trước khi có thể được sử dụng hiệu quả. Perplexity AI có thể được tận dụng để tự động hóa những quy trình sau khi trích xuất này, đảm bảo chất lượng và tính nhất quán của dữ liệu.

* **Mô tả:** Sau khi trích xuất dữ liệu ban đầu, dữ liệu có thể ở định dạng không đồng nhất, chứa tiếng ồn hoặc cần được làm phong phú (ví dụ: chuyển đổi tiền tệ, chuẩn hóa ngày tháng, phân loại văn bản). Perplexity AI, với khả năng hiểu ngôn ngữ tự nhiên mạnh mẽ của mình, có thể được sử dụng để thực hiện những nhiệm vụ biến đổi và làm sạch nâng cao này. Bằng cách cung cấp cho AI dữ liệu đã trích xuất và các hướng dẫn rõ ràng, nó có thể định dạng lại, làm sạch, và thậm chí làm phong phú dữ liệu, chuẩn bị cho việc phân tích hoặc lưu trữ. Điều này giảm thiểu cần thiết cho các kịch bản làm sạch dựa trên quy tắc phức tạp và làm cho quy trình dữ liệu trở nên linh hoạt hơn.

* **Ví dụ/ Các bước mã:**

    1. **Cài đặt các thư viện cần thiết:**

        ```bash
        pip install openai requests pydantic instructor
        ```

    2. **Thiết lập khóa API Perplexity AI của bạn** (như trong các giải pháp trước).

    3. **Viết mã Python:** Ví dụ này minh họa việc làm sạch và chuẩn hóa thông tin sản phẩm.

        ```python
        import requests
        from openai import OpenAI
        import os
        from pydantic import BaseModel, Field
        import instructor

        # Thiết lập khóa API Perplexity AI của bạn
        perplexity_api_key = os.getenv("PERPLEXITY_API_KEY", "KHÓA_API_PERPLEXITY_CỦA_BẠN")

        # Bổ sung client OpenAI với instructor cho đầu ra có cấu trúc
        client = instructor.patch(OpenAI(api_key=perplexity_api_key, base_url="https://api.perplexity.ai"))

Lớp RawProductDetails(BaseModel):
tên: str
giá_thô: str = Field(alias="price") # Sử dụng alias cho đầu vào có thể bị rối
mô_tả_thô: str = Field(alias="description")

Copy
    lớp CleanedProductDetails(BaseModel):
        tên_sản_phẩm: str
        giá_usd: float
        tóm_tắt_mô_tả: str
        danh_mục: str

    def fetch_html(url):
        """Lấy nội dung HTML của URL đã cho."""
        try:
            phản_hồi = requests.get(url, timeout=10)
            phản_hồi.raise_for_status()
            return phản_hồi.text
        except requests.exceptions.RequestException as e:
            print(f"Có lỗi khi lấy URL {url}: {e}")
            return None

    def extract_raw_data_with_perplexity(html_content):
        """Sử dụng Perplexity AI để trích xuất dữ liệu thô từ HTML."""
        if not html_content:
            return None
        
        try:
            raw_data = client.chat.completions.create(
                model="sonar-small-online",
                response_model=RawProductDetails,
                messages=[
                    {"role": "system", "content": "Bạn là một trợ lý AI trích xuất thông tin sản phẩm thô từ nội dung HTML. Trích xuất tên, giá và mô tả."},
                    {"role": "user", "content": f"Nội dung HTML: {html_content}\n\nTrích xuất tên sản phẩm, chuỗi giá thô, và mô tả thô của nó."}
                ]
            )
            return raw_data
        except Exception as e:
            print(f"Có lỗi khi trích xuất dữ liệu thô với Perplexity AI: {e}")
            return None

    def transform_and_clean_data_with_perplexity(raw_data: RawProductDetails):
        """Sử dụng Perplexity AI để chuyển đổi và làm sạch dữ liệu thô đã trích xuất."""
        if not raw_data:
            return None
        
        transformation_prompt = f"Làm sạch và chuyển đổi dữ liệu sản phẩm sau thành định dạng có cấu trúc:\n\nTên sản phẩm: {raw_data.name}\nGiá thô: {raw_data.price_raw}\nMô tả thô: {raw_data.description_raw}\n\nHướng dẫn:\n1. Chuẩn hóa tên sản phẩm (ví dụ: loại bỏ khoảng trắng thừa, viết hoa).
  1. Chuyển đổi giá thô thành số thực bằng USD. Nếu đơn vị tiền tệ không phải là USD, giả định nó là và chuyển đổi nếu cần thiết (ví dụ: '€100' thành 100.0).

  2. Tóm tắt mô tả tối đa 50 từ.

  3. Suy luận một danh mục sản phẩm duy nhất (ví dụ: 'Điện tử', 'Thời trang', 'Sách') dựa trên tên và mô tả.\n\nCung cấp đầu ra dưới dạng đối tượng JSON phù hợp với định dạng CleanedProductDetails."

    Copy
         try:
             cleaned_data = client.chat.completions.create(
                 model="sonar-small-online",
                 response_model=CleanedProductDetails,
                 messages=[
                     {"role": "system", "content": "Bạn là một trợ lý AI làm sạch và chuyển đổi dữ liệu thô thành định dạng có cấu trúc, chuẩn hóa dựa trên hướng dẫn của người dùng và một sơ đồ JSON được cung cấp."},
                     {"role": "user", "content": transformation_prompt}
                 ]
             )
             return cleaned_data
         except Exception as e:
             print(f"Có lỗi khi chuyển đổi dữ liệu với Perplexity AI: {e}")
             return None
    
     # Ví dụ Sử dụng
     target_url = "https://www.scrapingcourse.com/ecommerce/product/ajax-full-zip-sweatshirt/"
     html = fetch_html(target_url)
    
     if html:
         print("HTML đã được lấy. Đang trích xuất dữ liệu thô bằng Perplexity AI...")
         raw_product_info = extract_raw_data_with_perplexity(html)
         
         if raw_product_info:
             print("\n--- Chi tiết sản phẩm thô đã trích xuất ---")
             print(f"Tên: {raw_product_info.name}")
             print(f"Giá thô: {raw_product_info.price_raw}")
             print(f"Mô tả thô: {raw_product_info.description_raw}")
    
             print("\nĐang chuyển đổi và làm sạch dữ liệu với Perplexity AI...")
             cleaned_product_info = transform_and_clean_data_with_perplexity(raw_product_info)
    
             if cleaned_product_info:
                 print("\n--- Chi tiết sản phẩm đã được làm sạch và chuyển đổi ---")
                 print(f"Tên sản phẩm: {cleaned_product_info.product_name}")
                 print(f"Giá (USD): {cleaned_product_info.price_usd:.2f}")
                 print(f"Tóm tắt mô tả: {cleaned_product_info.description_summary}")
                 print(f"Danh mục: {cleaned_product_info.category}")
                 print(f"Đầu ra JSON: {cleaned_product_info.model_dump_json(indent=2)}")
             else:
                 print("Không thể làm sạch và chuyển đổi thông tin sản phẩm.")
         else:
             print("Không thể trích xuất thông tin sản phẩm thô.")
     else:
         print("Không thể lấy HTML.")
Copy
Giải pháp này thể hiện sự đa dạng của Perplexity AI không chỉ dừng lại ở việc trích xuất. Bằng cách tận dụng khả năng ngôn ngữ tự nhiên để biến đổi và làm sạch dữ liệu, bạn có thể hợp lý hóa đáng kể quy trình làm việc sau khi thu thập dữ liệu. Cách tiếp cận này đặc biệt có lợi cho việc duy trì chất lượng dữ liệu cao, đảm bảo tính nhất quán giữa các nguồn dữ liệu đa dạng, và chuẩn bị dữ liệu để sử dụng ngay lập tức trong phân tích, các mô hình học máy hoặc bảng điều khiển thông minh. Nó biến đổi dữ liệu web thô, lộn xộn thành những thông tin hữu ích, sạch sẽ với sự can thiệp thủ công tối thiểu.

### 8. Tích hợp Perplexity AI với Cloud Functions để thu thập dữ liệu quy mô lớn

Đối với các tác vụ thu thập dữ liệu quy mô lớn, theo sự kiện hoặc lên lịch, việc tích hợp Perplexity AI với các chức năng đám mây không máy chủ (ví dụ: AWS Lambda, Google Cloud Functions, Azure Functions) cung cấp khả năng mở rộng và hiệu quả chi phí rất lớn.

*   **Mô tả:** Các chức năng đám mây cho phép bạn chạy mã phản hồi theo các sự kiện (như có một mục mới xuất hiện trong hàng đợi hoặc một bộ hẹn giờ theo lịch) mà không cần cung cấp hoặc quản lý máy chủ. Bằng cách triển khai logic thu thập dữ liệu của Perplexity AI vào một chức năng đám mây, bạn có thể tạo ra những giải pháp thu thập dữ liệu có khả năng mở rộng cao và tiết kiệm chi phí. Mỗi lần gọi hàm có thể xử lý một tác vụ thu thập dữ liệu đơn lẻ, tận dụng Perplexity AI cho việc trích xuất dữ liệu thông minh, và tự động mở rộng để đáp ứng nhu cầu. Kiến trúc này rất lý tưởng cho việc xử lý khối lượng lớn URL hoặc theo dõi liên tục nhiều trang web.

*   **Ví dụ mã/Các bước:**

    1.  **Yêu cầu cần có:**
        *   Tài khoản AWS, Google Cloud hoặc Azure.
        *   Kiến thức về việc triển khai các chức năng không máy chủ.
        *   Khóa API Perplexity AI được cấu hình an toàn (ví dụ: thông qua các biến môi trường trong chức năng đám mây).

    2.  **Cài đặt các thư viện cần thiết (cho phát triển địa phương và gói):**

        ```bash
        pip install openai requests pydantic instructor
        ```

    3.  **Ví dụ (AWS Lambda với Python):**

        Tạo một tệp `lambda_function.py`:

        ```python
        import json
        import os
        import requests
        from openai import OpenAI
        from pydantic import BaseModel
        import instructor

        # Khởi tạo client Perplexity AI
        perplexity_api_key = os.getenv("PERPLEXITY_API_KEY")
        if not perplexity_api_key:
            raise ValueError("Biến môi trường PERPLEXITY_API_KEY chưa được thiết lập.")

        client = instructor.patch(OpenAI(api_key=perplexity_api_key, base_url="https://api.perplexity.ai"))

        class ProductDetails(BaseModel):
            name: str
            price: str
            description: str

        def fetch_html(url):
            """Lấy nội dung HTML của một URL cho trước."""
            try:
                response = requests.get(url, timeout=10)
                response.raise_for_status()
                return response.text
            except requests.exceptions.RequestException as e:
                print(f"Đã xảy ra lỗi khi lấy URL {url}: {e}")
                return None

        def extract_structured_data_with_perplexity(html_content, target_model: BaseModel):
            """Sử dụng Perplexity AI để trích xuất dữ liệu có cấu trúc từ HTML dựa trên một mô hình Pydantic."""
            if not html_content:
                return None
            
            try:
                extracted_data = client.chat.completions.create(
                    model="sonar-small-online",
                    response_model=target_model,
                    messages=[
                        {"role": "system", "content": "Bạn là một trợ lý AI trích xuất thông tin có cấu trúc từ nội dung HTML. Trích xuất các chi tiết đã được yêu cầu vào schema JSON đã cung cấp."},
                        {"role": "user", "content": f"Nội dung HTML: {html_content}\n\nTrích xuất các chi tiết sản phẩm sau: tên, giá và mô tả."}
                    ]
                )
                return extracted_data
            except Exception as e:
                print(f"Đã xảy ra lỗi khi trích xuất dữ liệu có cấu trúc với Perplexity AI: {e}")
                return None

        def lambda_handler(event, context):
            """Bộ xử lý hàm AWS Lambda."""
            print(f"Đã nhận sự kiện: {json.dumps(event)}")
            
            # Mong đợi \'url\' trong tải trọng sự kiện
            target_url = event.get("url")
            if not target_url:
                return {
                    "statusCode": 400,
                    "body": json.dumps({"message": "Thiếu \'url\' trong tải trọng sự kiện"})
                }

            html = fetch_html(target_url)
            if html:
                product_info = extract_structured_data_with_perplexity(html, ProductDetails)
                if product_info:
                    return {
                        "statusCode": 200,
                        "body": product_info.model_dump_json(indent=2)
                    }
                else:
                    return {
json Copy
"statusCode": 500,
                        "body": json.dumps({"message": "Không thể trích xuất thông tin sản phẩm."})
                    }
            else:
                return {
                    "statusCode": 500,
                    "body": json.dumps({"message": "Không thể truy cập HTML."})
                }
        ```

    4.  **Các bước triển khai (Chung):**
        *   Đóng gói `lambda_function.py` cùng với tất cả các phụ thuộc của nó (bao gồm `openai`, `requests`, `pydantic`, `instructor`) vào một gói triển khai (ví dụ: một tệp `.zip`).
        *   Tải gói lên nhà cung cấp đám mây mà bạn đã chọn (ví dụ: AWS Lambda).
        *   Cấu hình chức năng với bộ nhớ, thời gian chờ, và các biến môi trường phù hợp (đặc biệt là `PERPLEXITY_API_KEY`).
        *   Thiết lập các kích hoạt (ví dụ: API Gateway cho các yêu cầu HTTP, SQS cho xử lý dựa trên hàng đợi, EventBridge cho các tác vụ theo lịch).

    Cách tiếp cận không máy chủ này cho phép bạn xây dựng các giải pháp thu thập thông tin web có khả năng mở rộng cao, tiết kiệm chi phí và dựa trên sự kiện. Bằng cách chuyển giao thực thi cho các chức năng đám mây, bạn chỉ phải trả cho thời gian tính toán thực tế sử dụng, điều này lý tưởng cho các khối lượng công việc dao động và việc thu thập dữ liệu quy mô lớn. Khả năng phân tích thông minh của Perplexity AI trong kiến trúc này đảm bảo rằng ngay cả với khối lượng lớn, dữ liệu được trích xuất vẫn chính xác và có cấu trúc.

### 9. Xử lý lỗi và độ ổn định trong việc thu thập dữ liệu Perplexity AI

Xây dựng các bộ thu thập thông tin web đáng tin cậy yêu cầu xử lý lỗi toàn diện để quản lý hiệu quả các vấn đề mạng, thay đổi trang web và lỗi API. Giải pháp này phác thảo các chiến lược để tăng cường độ bền cho các bộ thu thập dữ liệu do Perplexity AI cung cấp.

*   **Mô tả:** Ngay cả với Perplexity AI, các vấn đề bất ngờ có thể phát sinh trong quá trình thu thập thông tin web. Thực hiện xử lý lỗi đúng cách đảm bảo rằng bộ thu thập của bạn không bị sập và có thể phục hồi hoặc ghi lại các lỗi một cách hiệu quả. Điều này bao gồm xử lý các lỗi HTTP, thời gian chờ mạng, lỗi API Perplexity AI và những trường hợp mà AI có thể không trích xuất dữ liệu như mong đợi. Các chiến lược bao gồm cơ chế thử lại, phân tích dự phòng và ghi lại chi tiết.

*   **Ví dụ mã/ Các bước:**

    1.  **Cài đặt các thư viện cần thiết:**

        ```bash
        pip install openai requests pydantic instructor tenacity
        ```

    2.  **Thiết lập khóa API Perplexity AI của bạn** (như trong các giải pháp trước).

    3.  **Viết đoạn mã Python:** Ví dụ này tích hợp `tenacity` cho logic thử lại đáng tin cậy và xử lý lỗi toàn diện hơn.

        ```python
        import requests
        from openai import OpenAI
        import os
        from pydantic import BaseModel
        import instructor
        from tenacity import retry, stop_after_attempt, wait_fixed, retry_if_exception_type
        import logging

        # Cấu hình ghi nhật ký
        logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s")

        # Đặt khóa API Perplexity AI của bạn
        perplexity_api_key = os.getenv("PERPLEXITY_API_KEY", "YOUR_PERPLEXITY_API_KEY")

        # Cập nhật client OpenAI với instructor để có đầu ra có cấu trúc
        client = instructor.patch(OpenAI(api_key=perplexity_api_key, base_url="https://api.perplexity.ai"))

        class ProductDetails(BaseModel):
            name: str | None = None
            price: str | None = None
            description: str | None = None

        # Thử lại decorator cho các yêu cầu mạng
        @retry(stop=stop_after_attempt(3), wait=wait_fixed(2), retry=retry_if_exception_type(requests.exceptions.RequestException))
        def fetch_html_robust(url):
            """Lấy nội dung HTML của một URL đã cho với các lần thử lại."""
            logging.info(f"Đang cố gắng lấy HTML từ {url}")
            response = requests.get(url, timeout=10)
            response.raise_for_status()
            return response.text

        # Thử lại decorator cho các cuộc gọi Perplexity AI
        @retry(stop=stop_after_attempt(3), wait=wait_fixed(5), retry=retry_if_exception_type(Exception))
        def extract_structured_data_robust(html_content, target_model: BaseModel):
            """Sử dụng Perplexity AI để trích xuất dữ liệu có cấu trúc từ HTML với các lần thử lại."""
            if not html_content:
                logging.warning("Không có nội dung HTML nào được cung cấp để trích xuất.")
                return None
            
            logging.info("Đang cố gắng trích xuất dữ liệu với Perplexity AI.")
            extracted_data = client.chat.completions.create(
                model="sonar-small-online",
                response_model=target_model,
                messages=[
                    {"role": "system", "content": "Bạn là một trợ lý AI trích xuất thông tin có cấu trúc từ nội dung HTML. Trích xuất các chi tiết yêu cầu vào sơ đồ JSON đã cung cấp."},
                    {"role": "user", "content": f"Nội dung HTML: {html_content}\n\nTrích xuất các chi tiết sản phẩm sau: tên, giá và mô tả."}
                ]
            )
            return extracted_data

Ví dụ Sử Dụng

Copy
    target_url = "https://www.scrapingcourse.com/ecommerce/product/ajax-full-zip-sweatshirt/"
    # Ví dụ về một URL có thể gặp lỗi (ví dụ: 404 hoặc lỗi mạng)
    # failing_url = "https://www.example.com/non-existent-page"

    print(f"\n--- Đang xử lý {target_url} ---")
    try:
        html = fetch_html_robust(target_url)
        if html:
            product_info = extract_structured_data_robust(html, ProductDetails)
            if product_info:
                print("\n--- Thông Tin Sản Phẩm Được Trích Xuất ---")
                print(f"Tên: {product_info.name}")
                print(f"Giá: {product_info.price}")
                print(f"Mô tả: {product_info.description}")
            else:
                logging.error("Perplexity AI không thể trích xuất dữ liệu sau nhiều lần thử.")
        else:
            logging.error("Không thể lấy HTML sau nhiều lần thử.")
    except Exception as e:
        logging.critical(f"Lỗi nghiêm trọng trong quá trình thu thập dữ liệu cho {target_url}: {e}")

    # Ví dụ với một URL có khả năng gây lỗi (bỏ chú thích để thử nghiệm)
    # print(f"\n--- Đang xử lý {failing_url} ---")
    # try:
    #     html_failing = fetch_html_robust(failing_url)
    #     if html_failing:
    #         product_info_failing = extract_structured_data_robust(html_failing, ProductDetails)
    #         if product_info_failing:
    #             print("\n--- Thông Tin Sản Phẩm Được Trích Xuất (URL Gặp Lỗi) ---")
    #             print(f"Tên: {product_info_failing.name}")
    #             print(f"Giá: {product_info_failing.price}")
    #             print(f"Mô tả: {product_info_failing.description}")
    #         else:
    #             logging.error("Perplexity AI không thể trích xuất dữ liệu từ URL gặp lỗi sau nhiều lần thử.")
    #     else:
    #         logging.error("Không thể lấy HTML từ URL gặp lỗi sau nhiều lần thử.")
    # except Exception as e:
    #     logging.critical(f"Lỗi nghiêm trọng trong quá trình thu thập dữ liệu cho {failing_url}: {e}")

Giải pháp này nhấn mạnh tầm quan trọng của việc xây dựng khả năng chống chịu trong các hoạt động thu thập dữ liệu của bạn. Bằng cách triển khai các cơ chế thử lại, xử lý lỗi toàn diện và ghi nhật ký chi tiết, bạn có thể tạo ra các trình thu thập dữ liệu sử dụng Perplexity AI mà đáng tin cậy hơn và ít bị gián đoạn hơn. Điều này là rất quan trọng để duy trì dòng dữ liệu liên tục và đảm bảo tính toàn vẹn của dữ liệu bạn thu thập, ngay cả khi đối diện với các môi trường web khó lường.

Nghiên Cứu Tình Huống và Các Kịch Bản Ứng Dụng

Khả năng của Perplexity AI trong việc thu thập dữ liệu từ web mở ra nhiều khả năng trong các ngành công nghiệp khác nhau. Khả năng phân tích và trích xuất dữ liệu một cách thông minh giúp nó phù hợp với các nhiệm vụ thu thập dữ liệu phức tạp và động. Dưới đây là một vài nghiên cứu tình huống và kịch bản ứng dụng:

Nghiên Cứu Tình Huống 1: Trích Xuất Dữ Liệu Sản Phẩm E-commerce

Thách Thức: Một công ty phân tích thương mại điện tử cần theo dõi giá sản phẩm, tình trạng sẵn có và đánh giá trên hàng ngàn nhà bán lẻ trực tuyến. Những nhà bán lẻ này thường xuyên cập nhật bố cục trang web của họ, làm hỏng các trình thu thập dữ liệu dựa trên quy tắc truyền thống và dẫn đến các khoảng trống dữ liệu đáng kể và tăng chi phí bảo trì.

Giải Pháp với Perplexity AI: Công ty đã triển khai một giải pháp thu thập dữ liệu sử dụng Perplexity AI. Họ đã sử dụng một trình duyệt không giao diện (Playwright) để kết xuất các trang sản phẩm và sau đó cung cấp HTML đầy đủ cho Perplexity AI. Thay vì xác định các bộ chọn CSS cụ thể, họ đã sử dụng các lệnh ngôn ngữ tự nhiên như "Trích xuất tên sản phẩm, giá hiện tại, giá gốc (nếu có giảm giá), đánh giá trung bình của khách hàng và số lượng đánh giá." Perplexity AI, kết hợp với các mô hình Pydantic cho đầu ra có cấu trúc, đã trích xuất liên tục dữ liệu cần thiết ngay cả khi các bố cục trang web đã thay đổi. Điều này đã giảm đáng kể thời gian bảo trì và cải thiện độ chính xác của dữ liệu.

Tác Động: Công ty đã đạt được mức giảm 95% giờ bảo trì trình thu thập dữ liệu và tăng 30% độ phủ dữ liệu. Khả năng nhanh chóng thích ứng với các thay đổi của trang web đã cho phép họ cung cấp thông tin thị trường chính xác và kịp thời hơn cho khách hàng.

Nghiên Cứu Tình Huống 2: Tổng Hợp Tin Tức và Nội Dung

Thách Thức: Một cơ quan giám sát truyền thông cần tổng hợp các bài báo từ hàng trăm nguồn tin tức trực tuyến đa dạng trong thời gian thực. Mỗi trang web tin tức đều có cấu trúc độc đáo, khiến việc trích xuất nhất quán tiêu đề bài viết, tác giả, ngày xuất bản và nội dung chính trở nên khó khăn.
Giải pháp với Perplexity AI: Cơ quan đã phát triển một hệ thống nơi các bài viết mới được xác định (chẳng hạn, thông qua RSS feeds hoặc giám sát sitemap). HTML của mỗi bài viết sau đó được lấy về và truyền tới Perplexity AI với một lệnh: "Xác định tiêu đề bài viết, tác giả, ngày xuất bản, và nội dung chính. Tóm tắt bài viết trong 100 từ." Sự hiểu biết ngôn ngữ tự nhiên của Perplexity AI cho phép nó xác định chính xác các phần tử này qua nhiều thiết kế web khác nhau, ngay cả khi chúng được nhúng trong các thẻ HTML hoặc lớp khác nhau.

Tác động: Cơ quan đã tăng tốc đáng kể quá trình tổng hợp nội dung của mình, giảm thời gian từ xuất bản đến trích xuất xuống 80%. Điều này cho phép họ cung cấp các nguồn tin tức và phân tích cập nhật hơn cho người đăng ký, nâng cao lợi thế cạnh tranh của họ trong thị trường giám sát truyền thông.

Nghiên cứu trường hợp 3: Nghiên cứu Thị trường và Phân tích Đối thủ

Thách thức: Một startup trong ngành SaaS cần thu thập thông tin cạnh tranh bằng cách phân tích các mô hình giá cả, bộ tính năng, và đánh giá của khách hàng từ các trang web của đối thủ. Thông tin thường được trình bày trong các bảng phức tạp, biểu đồ động, hoặc nhúng trong các mô tả văn bản dài.

Giải pháp với Perplexity AI: Startup đã sử dụng Perplexity AI để điều hướng các trang web của đối thủ và trích xuất các điểm dữ liệu cụ thể. Ví dụ, họ sẽ cung cấp HTML của một trang giá và hỏi, "Trích xuất tất cả các bậc giá, chi phí hàng tháng và hàng năm của chúng, cùng với các tính năng chính bao gồm trong mỗi bậc." Đối với các trang đánh giá, họ đã yêu cầu, "Tóm tắt cảm xúc của các đánh giá khách hàng và xác định các điểm đau thường gặp và tính năng được khen ngợi." Khả năng xử lý và tóm tắt thông tin văn bản phức tạp của Perplexity AI chứng tỏ có giá trị vô cùng.

Tác động: Startup đã có được những hiểu biết sâu sắc hơn, chi tiết hơn về các chiến lược của đối thủ mà không cần thu thập dữ liệu thủ công nhiều. Điều này đã thông báo cho phát triển sản phẩm và nỗ lực tiếp thị của họ, cho phép họ xác định các khoảng trống trên thị trường và tinh chỉnh các sản phẩm của chính mình một cách hiệu quả hơn. Dữ liệu mà Perplexity AI trích xuất được trực tiếp đưa vào bảng điều khiển phân tích doanh nghiệp của họ, cung cấp phân tích cạnh tranh theo thời gian thực.

Perplexity AI so với Web Scraping Truyền Thống: Tóm tắt So sánh

Hiểu các điểm khác biệt giữa các phương pháp web scraping truyền thống và những phương pháp được tăng cường bởi Perplexity AI là điều quan trọng để chọn cách tiếp cận phù hợp cho nhu cầu trích xuất dữ liệu của bạn. Trong khi các phương pháp truyền thống đã là nền tảng của web scraping trong nhiều năm, các phương pháp dựa trên AI mang lại những lợi thế đáng kể, đặc biệt trong môi trường web năng động ngày nay. Bảng dưới đây tóm tắt các điểm khác biệt chính:

Tính năng Web Scraping Truyền Thống (ví dụ, BeautifulSoup, Scrapy) Web Scraping Tăng Cường Bởi Perplexity AI (với Python)
Cơ Chế Chính Dựa trên quy tắc, dựa vào các bộ chọn CSS/XPath rõ ràng Dựa trên AI, sử dụng hiểu biết ngôn ngữ tự nhiên (NLU) để diễn giải nội dung
Khả Năng Thích Ứng với Thay Đổi Website Thấp; dễ bị vỡ với những thay đổi bố cục nhỏ Cao; thích ứng với các thay đổi bố cục, bền bỉ hơn
Nỗ Lực Bảo Trì Cao; cần cập nhật liên tục cho các thay đổi bộ chọn Thấp; AI xử lý nhiều phức tạp trong phân tích, giảm thiểu can thiệp thủ công
Xử Lý Nội Dung Động Cần trình duyệt headless (Selenium/Playwright) để hiển thị, sau đó phân tích thủ công Cần trình duyệt headless để hiển thị, sau đó AI để phân tích thông minh
Logic Trích Xuất Dữ Liệu Mã hóa rõ ràng cho từng điểm dữ liệu Lệnh bằng ngôn ngữ tự nhiên cho việc trích xuất dữ liệu, thường với các mô hình đầu ra có cấu trúc (Pydantic)
Xử Lý Lỗi Thực hiện thủ công logic thử lại, kiểm tra lỗi AI có thể suy luận dữ liệu ngay cả khi có sự khác biệt nhỏ, xử lý lỗi mạnh mẽ với các thư viện như tenacity
Độ Phức Tạp của Thiết Lập Có thể đơn giản hơn cho các trang tĩnh; phức tạp cho các trang động/các trang có chống bot Thiết lập ban đầu bao gồm khóa API và cấu hình khách hàng; đơn giản hóa logic phân tích
Chi Phí Chủ yếu là thời gian của lập trình viên và chi phí proxy Thời gian của lập trình viên, chi phí proxy, và chi phí sử dụng API Perplexity AI
Trường Hợp Sử Dụng Tốt Nhất Các trang web tĩnh, cấu trúc dự đoán cao, dự án quy mô nhỏ Các trang web động, bố cục thường xuyên thay đổi, dự án quy mô lớn, trích xuất dữ liệu phức tạp
Khả Năng Mở Rộng Cần thiết kế cẩn thận cho việc scraping phân tán Dễ dàng mở rộng với các chức năng đám mây, AI xử lý tải phân tích
Sự so sánh này làm nổi bật rằng trong khi các phương pháp truyền thống vẫn có vị trí của chúng cho các tác vụ quét dữ liệu đơn giản, tĩnh, Perplexity AI cung cấp một giải pháp tiên tiến, linh hoạt và cuối cùng là bền bỉ hơn cho những thách thức quét dữ liệu web hiện đại. Nó chuyển đổi từ việc tuân theo các quy tắc cứng nhắc sang việc diễn giải nội dung thông minh, làm cho việc trích xuất dữ liệu trở nên hiệu quả hơn và ít bị gián đoạn hơn.

Tăng cường khả năng quét của bạn với Scrapeless

Trong khi Perplexity AI cách mạng hóa việc phân tích và trích xuất dữ liệu từ các trang web phức tạp, trở ngại ban đầu để truy cập đáng tin cậy vào những trang này vẫn tồn tại. Các trang web thường áp dụng các biện pháp chống bot tinh vi, chặn IP, CAPTCHAs và giới hạn tần suất để ngăn chặn truy cập tự động. Đây là lúc một dịch vụ hạ tầng quét web mạnh mẽ như Scrapeless trở thành một đối tác vô giá, bổ sung cho Perplexity AI để tạo ra một giải pháp quét web hiệu quả toàn diện.

Scrapeless cung cấp một hạ tầng mạnh mẽ và có khả năng mở rộng được thiết kế để vượt qua những thách thức về quyền truy cập này. Bằng cách tích hợp Scrapeless vào quy trình làm việc quét web Python sử dụng Perplexity AI của bạn, bạn có thể:

  • Vượt qua các hàng rào chống quét dữ liệu: Scrapeless cung cấp các mạng proxy tiên tiến (dân cư, trung tâm dữ liệu, di động) và định tuyến yêu cầu thông minh để vượt qua các chặn IP, CAPTCHAs và các công nghệ chống bot khác. Điều này đảm bảo rằng Perplexity AI của bạn luôn nhận được nội dung HTML cần thiết, ngay cả từ những trang web được bảo vệ chặt chẽ nhất.
  • Đảm bảo thời gian hoạt động cao và độ tin cậy: Với Scrapeless xử lý các phức tạp trong việc truy cập web, bạn có thể duy trì các luồng dữ liệu nhất quán mà không cần lo lắng về việc các trình quét của bạn bị chặn hoặc gặp lỗi do các vấn đề về mạng. Sự tin cậy này là rất quan trọng cho việc thu thập dữ liệu theo thời gian thực và giám sát liên tục.
  • Mở rộng hoạt động của bạn một cách dễ dàng: Scrapeless được xây dựng để có khả năng mở rộng, cho phép bạn gửi hàng triệu yêu cầu mà không cần quản lý cơ sở hạ tầng proxy của riêng mình. Điều này giúp bạn giải phóng tài nguyên để tập trung vào việc tận dụng Perplexity AI cho việc trích xuất và phân tích dữ liệu thông minh, thay vì quản lý hạ tầng.
  • Đơn giản hóa mã nguồn của bạn: Bằng cách chuyển giao lớp truy cập cho Scrapeless, mã Python của bạn vẫn sạch sẽ và tập trung hơn vào việc tích hợp Perplexity AI. Bạn có thể sử dụng các API của Scrapeless để lấy HTML thô, và sau đó truyền nó trực tiếp cho Perplexity AI để phân tích thông minh, tạo ra một quy trình làm việc mạch lạc và hiệu quả.

Hãy tưởng tượng một kịch bản trong đó Perplexity AI là nhà phân tích dữ liệu thông minh của bạn, có khả năng hiểu và trích xuất thông tin từ bất kỳ tài liệu nào. Scrapeless đóng vai trò là người thu thập dữ liệu đáng tin cậy của bạn, đảm bảo rằng tất cả các tài liệu cần thiết được gửi đến nhà phân tích của bạn mà không thất bại. Cùng nhau, họ tạo thành một cặp đôi không thể ngăn cản cho việc thu thập dữ liệu web.

Sẵn sàng trải nghiệm việc quét web một cách liền mạch? Tăng cường các dự án Perplexity AI của bạn với Scrapeless. Đăng nhập hoặc đăng ký Scrapeless hôm nay và biến đổi khả năng trích xuất dữ liệu của bạn.

Kết luận và Lời kêu gọi Hành động

Cảnh quan quét dữ liệu web đang liên tục phát triển, với việc các trang web trở nên ngày càng tinh vi trong các cơ chế phòng thủ của chúng và cấu trúc dữ liệu ngày càng phức tạp hơn. Các phương pháp quét dữ liệu truyền thống, dựa trên quy tắc thường mong manh, đòi hỏi bảo trì liên tục và gặp khó khăn trong việc theo kịp những thay đổi này. Sự tích hợp của Perplexity AI vào các quy trình làm việc quét web Python đánh dấu một bước nhảy vọt quan trọng, cung cấp một sự chuyển mình mạnh mẽ từ các bộ chọn cứng nhắc đến việc trích xuất dữ liệu thông minh, dựa trên ngôn ngữ tự nhiên.

Trong hướng dẫn này, chúng tôi đã khám phá mười giải pháp chi tiết chứng minh cách Perplexity AI có thể nâng cao mọi giai đoạn của quy trình quét dữ liệu web. Từ việc trích xuất HTML cơ bản và đầu ra dữ liệu có cấu trúc sử dụng các mô hình Pydantic cho đến việc xử lý nội dung động, vượt qua các biện pháp chống quét dữ liệu bằng cách sử dụng proxy, tự động hóa việc xác định bộ chọn và cho phép thu thập dữ liệu theo thời gian thực, Perplexity AI chứng tỏ là một tài sản vô giá. Khả năng diễn giải nội dung theo ngữ nghĩa, thích ứng với các thay đổi của trang web và tạo điều kiện cho việc chuyển đổi dữ liệu tiên tiến khiến nó trở thành một viên gạch xây dựng cho việc xây dựng các trình quét dữ liệu web bền bỉ, hiệu quả và có khả năng mở rộng.

Tuy nhiên, ngay cả AI thông minh nhất cũng cần có quyền truy cập đáng tin cậy vào web. Đây là lúc các dịch vụ như Scrapeless trở nên quan trọng, cung cấp hạ tầng mạnh mẽ cần thiết để vượt qua các thách thức chống bot và đảm bảo dòng dữ liệu không bị gián đoạn. Bằng cách kết hợp khả năng phân tích thông minh của Perplexity AI với quyền truy cập web đáng tin cậy được cung cấp bởi Scrapeless, các nhà phát triển có thể xây dựng những giải pháp quét web thực sự mạnh mẽ và bảo vệ cho tương lai.
Hãy chào đón tương lai của việc trích xuất dữ liệu từ web. Bắt đầu tận dụng Perplexity AI trong các dự án web scraping bằng Python của bạn hôm nay để xây dựng các trình thu thập dữ liệu thông minh hơn, linh hoạt hơn và ít tốn công bảo trì hơn. Để truy cập web liền mạch và vượt qua những rào cản chống scraping khó khăn nhất, hãy tích hợp với Scrapeless. Biến nỗ lực thu thập dữ liệu của bạn từ một cuộc chiến liên tục thành một quy trình thông minh, hiệu quả.

Sẵn sàng nâng tầm trò chơi web scraping của bạn chưa? Đăng ký Scrapeless ngay bây giờ và mở khóa toàn bộ tiềm năng của việc trích xuất dữ liệu powered by AI.

Câu hỏi thường gặp

1. Những điều kiện tiên quyết nào để sử dụng Perplexity AI cho web scraping?

Để sử dụng Perplexity AI cho web scraping, bạn thường cần có hiểu biết cơ bản về lập trình Python, quen thuộc với các khái niệm web scraping (như yêu cầu HTTP và cấu trúc HTML), và một khóa API từ Perplexity AI. Đối với việc xử lý nội dung động hoặc các biện pháp chống scraping, kiến thức về các thư viện như Selenium/Playwright và dịch vụ proxy cũng rất hữu ích. Các thư viện Python openaiinstructor là cần thiết để tương tác với API của Perplexity AI.

2. Perplexity AI có thể xử lý tất cả các loại website không?

Perplexity AI nâng cao khả năng thu thập dữ liệu từ các website phức tạp và động bằng cách phân tích nội dung HTML một cách thông minh. Tuy nhiên, nó vẫn phụ thuộc vào việc nhận được HTML thô. Đối với các website sử dụng JavaScript để tạo nội dung, bạn sẽ cần kết hợp Perplexity AI với một trình duyệt không đầu (như Selenium hoặc Playwright) để đầu tiên Render trang và sau đó truyền HTML hoàn chỉnh cho Perplexity AI. Những website có biện pháp chống bot rất mạnh mẽ cũng có thể yêu cầu giải pháp proxy mạnh mẽ kết hợp với Perplexity AI.

3. Perplexity AI so với các công cụ scraping AI khác như thế nào?

Perplexity AI nổi bật nhờ khả năng hiểu ngôn ngữ tự nhiên mạnh mẽ, cho phép trích xuất dữ liệu dựa trên các hướng dẫn mô tả thay vì các bộ chọn cứng nhắc. Điều này giúp nó thích ứng cao với những thay đổi của website. Các công cụ AI khác có thể tập trung vào các khía cạnh khác nhau, như scraping trực quan (xác định các yếu tố theo hình thức của chúng) hoặc tích hợp sẵn cho các nền tảng cụ thể. Perplexity AI vượt trội với tính linh hoạt và khả năng diễn giải nội dung theo ngữ nghĩa, khiến nó trở thành một lựa chọn mạnh mẽ cho việc trích xuất dữ liệu thông minh đa mục đích.

4. Sử dụng Perplexity AI cho việc scraping quy mô lớn có tiết kiệm chi phí không?

Việc sử dụng Perplexity AI cho việc scraping quy mô lớn liên quan đến chi phí API, có thể cao lên. Tuy nhiên, tính tiết kiệm chi phí của nó đến từ một số yếu tố: thời gian phát triển và bảo trì giảm (do các trình thu thập dữ liệu ít dễ hỏng hơn), độ chính xác dữ liệu cao hơn, và khả năng trích xuất dữ liệu phức tạp mà không cần lập trình thủ công rộng rãi. Đối với khối lượng rất lớn, các chiến lược như caching, tối ưu hóa prompts và sử dụng Perplexity AI chủ yếu để xác định bộ chọn (sau đó là parsing truyền thống cho việc thu thập quy mô lớn) có thể giúp quản lý chi phí. Hiệu quả thu được thường lớn hơn so với chi phí API.

5. Scrapeless có thể cải thiện quy trình làm việc scraping dựa trên Perplexity AI như thế nào?

Scrapeless bổ sung cho Perplexity AI bằng cách xử lý khía cạnh quan trọng của việc truy cập web. Trong khi Perplexity AI xuất sắc trong việc trích xuất dữ liệu thông minh, Scrapeless cung cấp cơ sở hạ tầng để truy cập các trang web một cách đáng tin cậy, vượt qua các công nghệ chống scraping như chặn IP, CAPTCHA và giới hạn tốc độ. Bằng cách sử dụng Scrapeless để thu thập HTML thô và sau đó truyền HTML đó cho Perplexity AI để phân tích, bạn tạo ra một giải pháp web scraping hoàn chỉnh, linh hoạt và hiệu quả, đảm bảo cả việc truy cập và trích xuất thông minh.

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.

Bài viết phổ biến nhất

Danh mục