Веб-скраппинг прошел путь от простого извлечения данных на основе правил до более продвинутых методов, основанных на использовании больших языковых моделей (LLM) для извлечения данных с учетом контекста. ScrapegraphAI находится в авангарде этой эволюции, обеспечивая веб-скреппинг с помощью мощных LLM, таких как OpenAI, Gemini и даже локальных моделей, таких как Ollama. В этом блоге мы подробно расскажем о том, что такое ScrapegraphAI, как он работает, и рассмотрим реальный пример извлечения данных с веб-сайта с интеграцией прокси.
В этом блоге мы расскажем о следующем:
ScrapegraphAI - это надежный фреймворк для веб-скрейпинга (с открытым исходным кодом), использующий большие языковые модели для динамического извлечения данных с веб-сайтов. В отличие от традиционных скреперов, которые полагаются на жесткие CSS-селекторы или XPath, ScrapegraphAI использует LLM для интерпретации и извлечения структурированных данных из широкого спектра источников, включая динамические веб-страницы и файлы, такие как PDF. Просто укажите нужную информацию, и пусть ScrapeGraphAI выполнит всю работу, обеспечивая более гибкий и не требующий обслуживания вариант по сравнению с традиционными инструментами для скраппинга. Ключевой особенностью ScrapegraphAI является то, что он позволяет пользователям определять схему для данных, которые они хотят извлечь. Вы можете указать структурированный формат выходных данных, и ScrapegraphAI подгонит извлеченные данные под эту схему.
Одной из отличительных особенностей ScrapegraphAI является гибкость в выборе LLM, с поддержкой:
ScrapegraphAI предлагает несколько стандартных конвейеров скрапинга для различных нужд. Некоторые из наиболее распространенных включают:
В следующем разделе мы рассмотрим SmartScraperGraph, который позволяет скрапировать одну страницу, просто предоставив запрос и URL-адрес источника.
Чтобы продолжить работу, вам нужно установить несколько зависимостей. Это можно сделать, выполнив следующую команду:
pip install scrapegraphai openai python-dotenv
установка playwright
После их установки убедитесь, что у вас готов ключ OpenAI API. Храните его в файле .env, чтобы сохранить свои учетные данные в безопасности:
OPENAI_APIKEY=ваш_openai_api_key
Допустим, мы хотим извлечь информацию обо всех книгах на 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)
GPT-4o-mini
модель, предоставив ключ API и указав имя модели.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, современного инструмента для скраппинга, который использует большие языковые модели (LLM) для интеллектуального извлечения структурированных данных с веб-сайтов. Мы рассмотрели его основные возможности, включая различные конвейеры скрапинга, такие как SmartScraperGraph, и привели практический пример скрапинга данных о книгах с веб-сайта с помощью модели OpenAI GPT-4o-mini.
Кроме того, мы показали, как интегрировать прокси, особенно ProxyScrape's residential proxies. Прокси очень важны для сохранения анонимности, обхода ограничений и сохранения доступа к данным, особенно на сайтах, использующих тактику защиты от скаппинга, например, запрет IP-адресов или ограничение скорости.
Интегрируя прокси-серверыProxyScrape, вы обеспечиваете более эффективную, безопасную и масштабируемую деятельность по скраппингу даже на самых сложных веб-сайтах.