ScrapegraphAI: Tăng cường hiệu suất thu thập dữ liệu web bằng LLM

Hướng dẫn , Python , Thu thập dữ liệu ,27-09-20245 phút đọc

Web scraping đã phát triển từ việc trích xuất dựa trên quy tắc đơn giản thành các kỹ thuật tiên tiến hơn dựa vào các mô hình ngôn ngữ lớn (LLM) để trích xuất dữ liệu theo ngữ cảnh. ScrapegraphAI đi đầu trong quá trình phát triển này, cho phép trích xuất web thông qua các LLM mạnh mẽ như OpenAI, Gemini và thậm chí cả các mô hình cục bộ như Ollama. Trong blog này, chúng ta sẽ tìm hiểu ScrapegraphAI là gì, cách thức hoạt động và hướng dẫn một ví dụ thực tế về việc trích xuất dữ liệu từ một trang web có tích hợp proxy.

Bạn sẽ học được gì?

Trong blog này, chúng tôi sẽ đề cập đến:

  • ScrapegraphAI là gì và nó hoạt động như thế nào
  • Cách sử dụng cơ bản của ScrapegraphAI để thu thập dữ liệu trang web
  • Cách tích hợp proxy để có hiệu suất tốt hơn
  • Một ví dụ thực hành sử dụng mô hình GPT-4o-mini của OpenAI để trích xuất dữ liệu sách từ trang web Books to Scrape

ScrapegraphAI là gì và nó hoạt động như thế nào

ScrapegraphAI là một khuôn khổ trích xuất dữ liệu web mạnh mẽ (mã nguồn mở) tận dụng các mô hình ngôn ngữ lớn để trích xuất dữ liệu động từ các trang web. Không giống như các trình trích xuất dữ liệu truyền thống dựa vào bộ chọn CSS cứng nhắc hoặc XPath, ScrapegraphAI sử dụng LLM để diễn giải và trích xuất dữ liệu có cấu trúc từ nhiều nguồn khác nhau, bao gồm các trang web và tệp động như PDF. Chỉ cần chỉ định thông tin bạn đang tìm kiếm và để ScrapeGraphAI thực hiện công việc nặng nhọc, cung cấp tùy chọn linh hoạt hơn và ít bảo trì hơn so với các công cụ trích xuất dữ liệu truyền thống. Một tính năng chính của ScrapegraphAI là khả năng cho phép người dùng xác định lược đồ cho dữ liệu họ muốn trích xuất. Bạn có thể chỉ định định dạng có cấu trúc cho đầu ra của mình và ScrapegraphAI sẽ điều chỉnh dữ liệu được trích xuất để phù hợp với lược đồ này.

Một trong những tính năng nổi bật của ScrapegraphAI là tính linh hoạt trong việc lựa chọn LLM, hỗ trợ:

  • Các mô hình GPT của OpenAI như GPT-3.5 và GPT-4o-mini
  • Gemini cho các trường hợp sử dụng cụ thể hơn
  • Các mô hình cục bộ sử dụng Ollama để có giải pháp thu thập dữ liệu riêng tư, tiết kiệm chi phí

Đường ống cạo chìa khóa

ScrapegraphAI cung cấp một số đường ống cạo dữ liệu chuẩn để phù hợp với nhiều nhu cầu khác nhau. Một số đường ống phổ biến nhất bao gồm:

  • SmartScraperGraph : Công cụ thu thập dữ liệu một trang chỉ cần lời nhắc của người dùng và nguồn đầu vào (trang web hoặc tệp cục bộ).
  • SearchGraph : Trích xuất thông tin từ n kết quả tìm kiếm hàng đầu của một công cụ tìm kiếm.
  • SpeechGraph : Thu thập dữ liệu từ một trang và tạo tệp âm thanh từ kết quả.
  • ScriptCreatorGraph : Trích xuất một trang duy nhất và tạo ra một tập lệnh Python để trích xuất trong tương lai.
  • SmartScraperMultiGraph : Thu thập dữ liệu từ nhiều trang bằng một lời nhắc duy nhất và danh sách URL.
  • ScriptCreatorMultiGraph : Tương tự như công cụ trước nhưng tạo ra các tập lệnh Python để trích xuất dữ liệu nhiều trang.

Ở phần tiếp theo, chúng ta sẽ tập trung vào SmartScraperGraph , cho phép trích xuất dữ liệu từ một trang đơn lẻ bằng cách chỉ cần cung cấp lời nhắc và URL nguồn.

Cách sử dụng cơ bản của ScrapegraphAI

Điều kiện tiên quyết

Để theo dõi, bạn cần cài đặt một số dependency. Bạn có thể thực hiện bằng cách chạy lệnh sau:

pip cài đặt scrapegraphai openai python-dotenv playwright cài đặt
  • scrapegraphai : Đây là gói cốt lõi của ScrapegraphAI.
  • openai : Chúng tôi sẽ sử dụng mô hình GPT-4o-mini của OpenAI để thu thập dữ liệu.
  • python-dotenv : Điều này sẽ cho phép chúng ta tải các biến môi trường như khóa API từ tệp .env một cách an toàn.

Sau khi bạn đã cài đặt những thứ này, hãy đảm bảo bạn đã chuẩn bị sẵn OpenAI API Key . Lưu trữ nó trong tệp .env để giữ thông tin đăng nhập của bạn an toàn:

OPENAI_APIKEY =khóa_openai_api_key của bạn

Ví dụ về mã: Trích xuất dữ liệu từ sách để trích xuất

Giả sử chúng ta muốn trích xuất thông tin về tất cả các cuốn sách trên Books to Scrape , bao gồm:

  • Tên sách
  • Giá
  • Khả dụng
  • Đánh giá

Sau đây là ví dụ mã sử dụng quy trình SmartScraperGraph của ScrapegraphAI:

import os
from dotenv import load_dotenv
from scrapegraphai.graphs import SmartScraperGraph

# Load the OpenAI API key from .env file
load_dotenv()
openai_key = os.getenv("OPENAI_APIKEY")

# Define configuration for the LLM
graph_config = {
   "llm": {
      "api_key": openai_key,
      "model": "openai/gpt-4o-mini",
   },
}

prompt = """
Extract all the books from this website including
- Book Name
- Price
- Availability 
- Reviews
"""

# Create the SmartScraperGraph instance
smart_scraper_graph = SmartScraperGraph(
   prompt=prompt,
   source="https://books.toscrape.com/",
   config=graph_config
)


if __name__ == '__main__':
   result = smart_scraper_graph.run()
   print(result)

Giải thích về Bộ luật:

  • Cấu hình LLM: Chúng tôi cấu hình ScrapegraphAI để sử dụng OpenAI GPT-4o-mini mô hình bằng cách cung cấp khóa API và chỉ định tên mô hình.
  • Lời nhắc : Lời nhắc do người dùng thiết lập sẽ hướng dẫn AI trích xuất thông tin từ trang web về từng cuốn sách, bao gồm tên, giá, tình trạng còn hàng và đánh giá.
  • URL nguồn : Chúng tôi cung cấp URL của trang web mà chúng tôi muốn thu thập dữ liệu.
  • Chạy Scraper: Các chạy() Phương pháp này bắt đầu quá trình thu thập dữ liệu và kết quả được in ra dưới dạng danh sách các từ điển, mỗi từ điển chứa thông tin chi tiết về một cuốn sách.

Ví dụ đầu ra

Sau đây là ví dụ về kết quả đầu ra có thể trông như thế nào:

{'Book Name': 'A Light in the Attic', 'Price': '£51.77', 'Availability': 'In stock', 'Reviews': 'NA'},
{'Book Name': 'Tipping the Velvet', 'Price': '£53.74', 'Availability': 'In stock', 'Reviews': 'NA'},
{'Book Name': 'Soumission', 'Price': '£50.10', 'Availability': 'In stock', 'Reviews': 'NA'},
{'Book Name': 'Sharp Objects', 'Price': '£47.82', 'Availability': 'In stock', 'Reviews': 'NA'},
# ... more books ...

Như bạn có thể thấy, công cụ thu thập dữ liệu này có thể trích xuất thông tin chi tiết của từng cuốn sách theo định dạng có cấu trúc, sẵn sàng để sử dụng trong đường truyền dữ liệu của bạn.

Tích hợp Proxy

Khi thu thập dữ liệu ở quy mô lớn hoặc nhắm mục tiêu vào các trang web có biện pháp chống thu thập dữ liệu, việc tích hợp proxy trở nên cần thiết để tránh lệnh cấm IP, captcha và giới hạn tốc độ. Sử dụng proxy không chỉ mang lại tính ẩn danh mà còn đảm bảo rằng bạn có thể thu thập dữ liệu với số lượng lớn mà không bị gián đoạn.

Một trong những lựa chọn tốt nhất cho trường hợp này là proxy dân dụng , vì chúng đến từ địa chỉ IP dân dụng thực, khiến chúng khó bị phát hiện và chặn hơn.

Proxy dân dụng từ ProxyScrape hoàn hảo cho các tình huống thu thập dữ liệu web, đặc biệt là khi nhắm mục tiêu vào các trang web có biện pháp chống thu thập dữ liệu nghiêm ngặt. Chúng tôi cung cấp các địa chỉ IP luân phiên từ nhiều vị trí khác nhau, đảm bảo rằng các yêu cầu của bạn xuất hiện như thể chúng đến từ người dùng thực. Điều này giúp bỏ qua các hạn chế, tránh lệnh cấm và đảm bảo quyền truy cập liên tục vào dữ liệu bạn cần.

Bây giờ chúng ta hãy xem cách proxy được tích hợp với ScrapegraphAI:

from dotenv import load_dotenv
import os
from scrapegraphai.graphs import SmartScraperGraph

# Load the OpenAI API key from .env file
load_dotenv()
openai_key = os.getenv("OPENAI_APIKEY")

# Define the configuration with proxy integration
graph_config = {
   "llm": {
      "api_key": openai_key,
      "model": "openai/gpt-4o-mini",
   },
   "loader_kwargs": {
      "proxy": {
         "server": "rp.proxyscrape.com:6060",
         "username": "your_username",
         "password": "your_password",
      },
   },
}

prompt = """
Extract all the books from this website including
- Book Name
- Price
- Availability 
- Reviews
"""

# Create the SmartScraperGraph instance
smart_scraper_graph = SmartScraperGraph(
   prompt=prompt,
   source="https://books.toscrape.com/",
   config=graph_config
)

# Run the scraper and print the result
if __name__ == '__main__':
   result = smart_scraper_graph.run()
   print(result)

Giải thích về tích hợp Proxy:

  • Cấu hình Proxy: Proxy được thiết lập theo bộ nạp_kwargs chìa khóa trong đồ thị_cấu hình. Tại đây, bạn xác định địa chỉ máy chủ proxy, tên người dùng và mật khẩu của mình.
  • Điều này đảm bảo rằng mọi yêu cầu do ScrapegraphAI thực hiện đều được định tuyến qua máy chủ proxy được chỉ định, giúp vượt qua các hạn chế hoặc tránh lệnh cấm IP trên trang web mục tiêu.

Phần kết luận

Trong blog này, chúng tôi đã khám phá sức mạnh của ScrapegraphAI , một công cụ trích xuất dữ liệu web hiện đại sử dụng các mô hình ngôn ngữ lớn (LLM) để trích xuất dữ liệu có cấu trúc từ các trang web một cách thông minh. Chúng tôi đã xem qua các tính năng chính của công cụ này, bao gồm nhiều đường ống trích xuất dữ liệu như SmartScraperGraph và cung cấp một ví dụ thực tế về việc trích xuất dữ liệu sách từ một trang web bằng mô hình GPT-4o-mini của OpenAI.

Ngoài ra, chúng tôi đã chỉ cách tích hợp proxy, đặc biệt là proxy dân dụng của ProxyScrape . Proxy rất quan trọng để duy trì tính ẩn danh, vượt qua các hạn chế và duy trì quyền truy cập dữ liệu, đặc biệt là với các trang web sử dụng chiến thuật chống thu thập dữ liệu như lệnh cấm IP hoặc giới hạn tốc độ.

Bằng cách tích hợp proxy dân dụng của ProxyScrape , bạn đảm bảo hoạt động thu thập dữ liệu web của mình hiệu quả hơn, an toàn hơn và có khả năng mở rộng hơn, ngay cả trên các trang web khó khăn nhất.