темный логотип proxyscrape

ScrapegraphAI: повышение эффективности веб-скрапинга с помощью LLM

Путеводители, Python, Скрапинг, 27 сентября-20245 минут чтения

Веб-скраппинг прошел путь от простого извлечения данных на основе правил до более продвинутых методов, основанных на использовании больших языковых моделей (LLM) для извлечения данных с учетом контекста. ScrapegraphAI находится в авангарде этой эволюции, обеспечивая веб-скреппинг с помощью мощных LLM, таких как OpenAI, Gemini и даже локальных моделей, таких как Ollama. В этом блоге мы подробно расскажем о том, что такое ScrapegraphAI, как он работает, и рассмотрим реальный пример извлечения данных с веб-сайта с интеграцией прокси.

Чему вы научитесь?

В этом блоге мы расскажем о следующем:

  • Что такое ScrapegraphAI и как он работает
  • Базовое использование ScrapegraphAI для скраппинга веб-сайтов
  • Как интегрировать прокси-серверы для повышения производительности
  • Практический пример использования модели GPT-4o-mini от OpenAI для извлечения данных о книгах с сайта Books to Scrape

Что такое ScrapegraphAI и как он работает

ScrapegraphAI - это надежный фреймворк для веб-скрейпинга (с открытым исходным кодом), использующий большие языковые модели для динамического извлечения данных с веб-сайтов. В отличие от традиционных скреперов, которые полагаются на жесткие CSS-селекторы или XPath, ScrapegraphAI использует LLM для интерпретации и извлечения структурированных данных из широкого спектра источников, включая динамические веб-страницы и файлы, такие как PDF. Просто укажите нужную информацию, и пусть ScrapeGraphAI выполнит всю работу, обеспечивая более гибкий и не требующий обслуживания вариант по сравнению с традиционными инструментами для скраппинга. Ключевой особенностью ScrapegraphAI является то, что он позволяет пользователям определять схему для данных, которые они хотят извлечь. Вы можете указать структурированный формат выходных данных, и ScrapegraphAI подгонит извлеченные данные под эту схему.

Одной из отличительных особенностей ScrapegraphAI является гибкость в выборе LLM, с поддержкой:

  • Модели GPT от OpenAI , такие как GPT-3.5 и GPT-4o-mini
  • Gemini для более специфических случаев использования
  • Местные модели используют Ollama для экономически эффективных частных решений по скрапбукингу

Ключевые трубопроводы для скрапинга

ScrapegraphAI предлагает несколько стандартных конвейеров скрапинга для различных нужд. Некоторые из наиболее распространенных включают:

  • SmartScraperGraph: Одностраничный скрепер, которому нужен только пользовательский запрос и источник входных данных (веб-сайт или локальный файл).
  • SearchGraph: Извлекает информацию из n верхних результатов поиска поисковой системы.
  • SpeechGraph: Собирает данные со страницы и генерирует аудиофайл из полученных результатов.
  • ScriptCreatorGraph: Соскребает одну страницу и генерирует Python-скрипт для последующих извлечений.
  • SmartScraperMultiGraph: Соскребает данные с нескольких страниц, используя один запрос и список URL-адресов.
  • ScriptCreatorMultiGraph: Аналогичен предыдущему, но генерирует Python-скрипты для многостраничного скраппинга.

В следующем разделе мы рассмотрим SmartScraperGraph, который позволяет скрапировать одну страницу, просто предоставив запрос и URL-адрес источника.

Основные возможности использования ScrapegraphAI

Пререквизиты

Чтобы продолжить работу, вам нужно установить несколько зависимостей. Это можно сделать, выполнив следующую команду:

pip install scrapegraphai openai python-dotenv
 установка playwright
  • scrapegraphai: Это основной пакет для ScrapegraphAI.
  • openai: Для скраппинга мы будем использовать модель GPT-4o-mini от OpenAI.
  • python-dotenv: Это позволит нам безопасно загружать переменные окружения, такие как ключи API, из файла .env.

После их установки убедитесь, что у вас готов ключ OpenAI API. Храните его в файле .env, чтобы сохранить свои учетные данные в безопасности:

OPENAI_APIKEY=ваш_openai_api_key

Пример кода: Скрапирование данных из книг в Scrape

Допустим, мы хотим извлечь информацию обо всех книгах на Books to Scrape, включая:

  • Название книги
  • Цена
  • Доступность
  • Отзывы

Вот пример кода, использующего конвейер SmartScraperGraph от 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)

Пояснение к кодексу:

  • Конфигурация LLM: Мы настроим ScrapegraphAI на использование OpenAI GPT-4o-mini модель, предоставив ключ API и указав имя модели.
  • Подсказка: Определяемый пользователем запрос дает указание ИИ извлечь из веб-сайта информацию о каждой книге, включая название, цену, наличие и отзывы.
  • Исходный URL: Мы указываем URL-адрес сайта, с которого хотим получить информацию.
  • Запуск скребка: The run() Метод запускает процесс скраппинга, и результат выводится в виде списка словарей, каждый из которых содержит информацию о книге.

Пример вывода

Вот пример того, как может выглядеть вывод:

{'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 ...

Как видите, скребок успешно извлекает подробную информацию о каждой книге в структурированном формате, готовом для использования в конвейере данных.

Интеграция прокси-сервера

Если вы занимаетесь масштабным скраппингом или нацелены на сайты с антискрейпинговыми мерами, интеграция прокси становится необходимой, чтобы избежать IP-запретов, капчи и ограничения скорости. Использование прокси не только обеспечивает анонимность, но и гарантирует, что вы сможете собирать большие объемы данных без перебоев.

Одним из лучших вариантов для этого являются прокси-серверы для жилых домов, поскольку они работают с реальных IP-адресов, что делает их более сложными для обнаружения и блокировки.

Жилые прокси-серверы от ProxyScrape идеально подходят для сценариев веб-скрапинга, особенно когда речь идет о веб-сайтах со строгими мерами по борьбе со скрапингом. Мы предлагаем вращающиеся IP-адреса из разных мест, гарантируя, что ваши запросы будут выглядеть так, как будто они поступают от реальных пользователей. Это помогает обойти ограничения, избежать запретов и обеспечить постоянный доступ к нужным вам данным.

Теперь давайте посмотрим, как прокси интегрированы в 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)

Объяснение интеграции прокси:

  • Конфигурация прокси: Прокси-сервер устанавливается в разделе loader_kwargs ключ в graph_config. Здесь вы определяете адрес прокси-сервера, имя пользователя и пароль.
  • Это гарантирует, что все запросы ScrapegraphAI будут направляться через указанный прокси-сервер, что поможет обойти ограничения или избежать IP-запретов на целевом сайте.

Заключение

В этом блоге мы рассмотрели возможности ScrapegraphAI, современного инструмента для скраппинга, который использует большие языковые модели (LLM) для интеллектуального извлечения структурированных данных с веб-сайтов. Мы рассмотрели его основные возможности, включая различные конвейеры скрапинга, такие как SmartScraperGraph, и привели практический пример скрапинга данных о книгах с веб-сайта с помощью модели OpenAI GPT-4o-mini.

Кроме того, мы показали, как интегрировать прокси, особенно ProxyScrape's residential proxies. Прокси очень важны для сохранения анонимности, обхода ограничений и сохранения доступа к данным, особенно на сайтах, использующих тактику защиты от скаппинга, например, запрет IP-адресов или ограничение скорости.

Интегрируя прокси-серверыProxyScrape, вы обеспечиваете более эффективную, безопасную и масштабируемую деятельность по скраппингу даже на самых сложных веб-сайтах.