Crawlee охватывает все этапы сканирования и очистки данных и помогает создавать надежные инструменты очистки. Быстрый.
Crawlee для Python открыт для первых пользователей!
Ваши краулеры будут выглядеть почти как люди и оставаться незамеченными современными средствами защиты от ботов даже в конфигурации по умолчанию. Crawlee предоставляет вам инструменты для сканирования ссылок в Интернете, сбора данных и их постоянного хранения в машиночитаемых форматах, не беспокоясь о технических деталях. А благодаря богатым возможностям конфигурации вы можете настроить практически любой аспект Crawlee в соответствии с потребностями вашего проекта, если настройки по умолчанию не подходят.
Посмотреть полную документацию, руководства и примеры на веб-сайте проекта Crawlee ?
У нас также есть реализация Crawlee на TypeScript, которую вы можете изучить и использовать в своих проектах. Посетите наш репозиторий GitHub для получения дополнительной информации о Crawlee для JS/TS на GitHub.
Мы рекомендуем посетить руководство «Введение» в документации Crawlee для получения дополнительной информации.
Crawlee crawlee
в виде пакета PyPI. Основные функции включены в базовый пакет, а дополнительные функции доступны в качестве дополнительных опций для минимизации размера пакета и зависимостей. Чтобы установить Crawlee со всеми функциями, выполните следующую команду:
pip install ' crawlee[all] '
Затем установите зависимости Playwright:
playwright install
Убедитесь, что Crawlee успешно установлен:
python -c ' import crawlee; print(crawlee.__version__) '
Подробные инструкции по установке см. на странице документации по настройке.
Самый быстрый способ начать работу с Crawlee — использовать интерфейс командной строки Crawlee и выбрать один из подготовленных шаблонов. Сначала убедитесь, что у вас установлен Pipx:
pipx --help
Затем запустите CLI и выберите один из доступных шаблонов:
pipx run crawlee create my-crawler
Если у вас уже установлен crawlee
, вы можете запустить его, выполнив:
crawlee create my-crawler
Вот несколько практических примеров, которые помогут вам начать работу с различными типами сканеров в Кроули. В каждом примере показано, как настроить и запустить сканер для конкретных случаев использования, независимо от того, нужно ли вам обрабатывать простые HTML-страницы или взаимодействовать с сайтами с большим количеством JavaScript. Запуск сканера создаст каталог storage/
в вашем текущем рабочем каталоге.
BeautifulSoupCrawler
загружает веб-страницы с помощью библиотеки HTTP и предоставляет пользователю контент, проанализированный в формате HTML. По умолчанию он использует HttpxHttpClient
для HTTP-связи и BeautifulSoup для анализа HTML. Он идеально подходит для проектов, требующих эффективного извлечения данных из HTML-контента. Этот сканер имеет очень хорошую производительность, поскольку не использует браузер. Однако, если вам нужно выполнить клиентский JavaScript для получения контента, этого будет недостаточно, и вам придется использовать PlaywrightCrawler
. Также, если вы хотите использовать этот сканер, убедитесь, что вы установили crawlee
с дополнением beautifulsoup
.
import asyncio
from crawlee . beautifulsoup_crawler import BeautifulSoupCrawler , BeautifulSoupCrawlingContext
async def main () -> None :
crawler = BeautifulSoupCrawler (
# Limit the crawl to max requests. Remove or increase it for crawling all links.
max_requests_per_crawl = 10 ,
)
# Define the default request handler, which will be called for every request.
@ crawler . router . default_handler
async def request_handler ( context : BeautifulSoupCrawlingContext ) -> None :
context . log . info ( f'Processing { context . request . url } ...' )
# Extract data from the page.
data = {
'url' : context . request . url ,
'title' : context . soup . title . string if context . soup . title else None ,
}
# Push the extracted data to the default dataset.
await context . push_data ( data )
# Enqueue all links found on the page.
await context . enqueue_links ()
# Run the crawler with the initial list of URLs.
await crawler . run ([ 'https://crawlee.dev' ])
if __name__ == '__main__' :
asyncio . run ( main ())
PlaywrightCrawler
использует автономный браузер для загрузки веб-страниц и предоставляет API для извлечения данных. Он построен на основе Playwright, библиотеки автоматизации, предназначенной для управления автономными браузерами. Он превосходно справляется с получением веб-страниц, которые используют клиентский JavaScript для создания контента, или задач, требующих взаимодействия с контентом, управляемым JavaScript. В сценариях, где выполнение JavaScript не требуется или требуется более высокая производительность, рассмотрите возможность использования BeautifulSoupCrawler
. Также, если вы хотите использовать этот искатель, убедитесь, что вы установили crawlee
с дополнением playwright
.
import asyncio
from crawlee . playwright_crawler import PlaywrightCrawler , PlaywrightCrawlingContext
async def main () -> None :
crawler = PlaywrightCrawler (
# Limit the crawl to max requests. Remove or increase it for crawling all links.
max_requests_per_crawl = 10 ,
)
# Define the default request handler, which will be called for every request.
@ crawler . router . default_handler
async def request_handler ( context : PlaywrightCrawlingContext ) -> None :
context . log . info ( f'Processing { context . request . url } ...' )
# Extract data from the page.
data = {
'url' : context . request . url ,
'title' : await context . page . title (),
}
# Push the extracted data to the default dataset.
await context . push_data ( data )
# Enqueue all links found on the page.
await context . enqueue_links ()
# Run the crawler with the initial list of requests.
await crawler . run ([ 'https://crawlee.dev' ])
if __name__ == '__main__' :
asyncio . run ( main ())
Посетите нашу страницу «Примеры» в документации Crawlee, чтобы увидеть широкий спектр дополнительных вариантов использования и демонстраций.
Почему Crawlee является предпочтительным выбором для парсинга и сканирования веб-страниц?
Crawlee имеет открытый исходный код и работает где угодно, но, поскольку он разработан Apify, его легко настроить на платформе Apify и запустить в облаке. Посетите веб-сайт Apify SDK, чтобы узнать больше о развертывании Crawlee на платформе Apify.
Если вы обнаружите какую-либо ошибку или проблему с Crawlee, отправьте сообщение о проблеме на GitHub. Если у вас есть вопросы, вы можете задать их в Stack Overflow, в обсуждениях GitHub или присоединиться к нашему серверу Discord.
Ваш вклад в код приветствуется, и вас будут хвалить вечно! Если у вас есть идеи по улучшению, сообщите о проблеме или создайте запрос на включение. Правила внесения взносов и кодекс поведения можно найти на сайте CONTRIBUTING.md.
Этот проект лицензируется по лицензии Apache 2.0 — подробности см. в файле ЛИЦЕНЗИИ.