Crawlee cubre su rastreo y raspado de extremo a extremo y lo ayuda a construir raspadores confiables. Rápido.
¡Crawlee para Python está abierto a los primeros usuarios!
Sus rastreadores tendrán un aspecto casi humano y pasarán desapercibidos para las protecciones modernas contra bots, incluso con la configuración predeterminada. Crawlee le brinda las herramientas para rastrear la web en busca de enlaces, extraer datos y almacenarlos de manera persistente en formatos legibles por máquina, sin tener que preocuparse por los detalles técnicos. Y gracias a las ricas opciones de configuración, puede modificar casi cualquier aspecto de Crawlee para adaptarlo a las necesidades de su proyecto si la configuración predeterminada no es suficiente.
¿Ver documentación completa, guías y ejemplos en el sitio web del proyecto Crawlee ?
También tenemos una implementación TypeScript de Crawlee, que puede explorar y utilizar para sus proyectos. Visite nuestro repositorio de GitHub para obtener más información sobre Crawlee para JS/TS en GitHub.
Recomendamos visitar el tutorial de Introducción en la documentación de Crawlee para obtener más información.
Crawlee está disponible como paquete PyPI crawlee
. La funcionalidad principal está incluida en el paquete base, con características adicionales disponibles como extras opcionales para minimizar el tamaño y las dependencias del paquete. Para instalar Crawlee con todas las funciones, ejecute el siguiente comando:
pip install ' crawlee[all] '
Luego, instala las dependencias de Playwright:
playwright install
Verifique que Crawlee se haya instalado correctamente:
python -c ' import crawlee; print(crawlee.__version__) '
Para obtener instrucciones de instalación detalladas, consulte la página de documentación de configuración.
La forma más rápida de comenzar con Crawlee es utilizar la CLI de Crawlee y seleccionar una de las plantillas preparadas. Primero, asegúrese de tener Pipx instalado:
pipx --help
Luego, ejecute la CLI y elija entre las plantillas disponibles:
pipx run crawlee create my-crawler
Si ya tienes instalado crawlee
, puedes activarlo ejecutando:
crawlee create my-crawler
A continuación se muestran algunos ejemplos prácticos que le ayudarán a empezar a utilizar los diferentes tipos de rastreadores en Crawlee. Cada ejemplo demuestra cómo configurar y ejecutar un rastreador para casos de uso específicos, ya sea que necesite manejar páginas HTML simples o interactuar con sitios con mucho JavaScript. Una ejecución del rastreador creará un directorio storage/
en su directorio de trabajo actual.
BeautifulSoupCrawler
descarga páginas web utilizando una biblioteca HTTP y proporciona contenido analizado en HTML al usuario. De forma predeterminada, utiliza HttpxHttpClient
para la comunicación HTTP y BeautifulSoup para analizar HTML. Es ideal para proyectos que requieren una extracción eficiente de datos del contenido HTML. Este rastreador tiene muy buen rendimiento ya que no utiliza navegador. Sin embargo, si necesita ejecutar JavaScript del lado del cliente para obtener su contenido, esto no será suficiente y necesitará usar PlaywrightCrawler
. Además, si desea utilizar este rastreador, asegúrese de instalar crawlee
con beautifulsoup
extra.
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
utiliza un navegador sin cabeza para descargar páginas web y proporciona una API para la extracción de datos. Está construido sobre Playwright, una biblioteca de automatización diseñada para administrar navegadores sin cabeza. Destaca en la recuperación de páginas web que dependen de JavaScript del lado del cliente para la generación de contenido o tareas que requieren interacción con contenido basado en JavaScript. Para escenarios en los que la ejecución de JavaScript es innecesaria o se requiere un mayor rendimiento, considere usar BeautifulSoupCrawler
. Además, si desea utilizar este rastreador, asegúrese de instalar crawlee
con playwright
Extra.
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 ())
Explore nuestra página de Ejemplos en la documentación de Crawlee para ver una amplia gama de casos de uso y demostraciones adicionales.
¿Por qué Crawlee es la opción preferida para el rastreo y el raspado web?
Crawlee es de código abierto y se ejecuta en cualquier lugar, pero como fue desarrollado por Apify, es fácil de configurar en la plataforma Apify y ejecutar en la nube. Visite el sitio web de Apify SDK para obtener más información sobre cómo implementar Crawlee en la plataforma Apify.
Si encuentra algún error o problema con Crawlee, envíe un problema en GitHub. Si tiene preguntas, puede hacerlas en Stack Overflow, en GitHub Discussions o puede unirse a nuestro servidor de Discord.
¡Tus contribuciones de código son bienvenidas y serás elogiado por la eternidad! Si tiene alguna idea para mejorar, envíe un problema o cree una solicitud de extracción. Para conocer las pautas de contribución y el código de conducta, consulte CONTRIBUTING.md.
Este proyecto tiene la licencia Apache 2.0; consulte el archivo de LICENCIA para obtener más detalles.