Googlescraper es una herramienta de código abierto y seguirá siendo una herramienta de código abierto en el futuro.
También el sucesor moderno de Googlescraper, la infraestructura de rastreo de propósito general, seguirá siendo de código abierto y libre.
Sin embargo, algunas personas querrían tener un servicio rápidamente que les permita raspar algunos datos de Google o cualquier otro motor de búsqueda. Por esta razón, creé el servicio web scrapeulf.com.
Último estado: febrero de 2019
El sucesor de Googlescraper se puede encontrar aquí
Esto significa que ya no mantendré este proyecto. Todo el desarrollo nuevo va en el proyecto anterior.
Hay varias razones por las que no continuaré haciendo mucho esfuerzo en este proyecto.
Por esta razón, voy a continuar desarrollando una biblioteca de raspado llamada https://www.npmjs.com/package/se-scraper en JavaScript que se ejecuta encima de Puppeteer.
Puede descargar la aplicación aquí: https://www.npmjs.com/package/se-scraper
Admite una amplia gama de diferentes motores de búsqueda y es mucho más eficiente que Googlescraper. La base del código también es mucho menos compleja sin colocar/colas y capacidades de registro complejas.
Para preguntas, puede contactarme en mi Wegpage y escribirme un correo electrónico allí.
Este proyecto ha vuelto a vivir después de dos años de abandono. En las próximas semanas, me tomaré un tiempo para actualizar toda la funcionalidad a los desarrollos más recientes. Esto abarca la actualización de todas las reglas y cambios en el comportamiento del motor de búsqueda. Después de un par de semanas, puede esperar que este proyecto vuelva a funcionar como se documenta aquí.
Googlescraper está escrito en Python 3. Debe instalar al menos Python 3.6. El último gran desarrollo se realizó con Python 3.7. Entonces, cuando use Ubuntu 16.04 y Python 3.7, por ejemplo, instale Python 3 en los paquetes oficiales. Utilizo la distribución de Anaconda Python, que funciona muy bien para mí.
Además, debe instalar el navegador Chrome y también el cromedriver para el modo de selenio. Alternativamente, instale el navegador Firefox y el geckodriver para el modo Selenium. Vea las instrucciones a continuación.
También puede instalar googlescraper cómodamente con PIP:
virtualenv --python python3 env
source env/bin/activate
pip install GoogleScraper
En este momento (septiembre de 2018) esto se desaconseja. Instale en las últimas fuentes de GitHub.
A veces, las cosas más nuevas e increíbles no están disponibles en la cheeseshop (así es como llaman https://pypi.python.org/pypi/pip). Por lo tanto, tal vez desee instalar GoogleCraper desde la última fuente que reside en este repositorio de GitHub. Puedes hacerlo así:
virtualenv --python python3 env
source env/bin/activate
pip install git+git://github.com/NikolaiT/GoogleScraper/
Tenga en cuenta que algunas características y ejemplos pueden no funcionar como se esperaba. Tampoco garantizo que la aplicación se ejecute. Solo garantizo (al menos en cierto grado) que la instalación de PIP producirá una versión utilizable.
Descargue el último ChromedRiver desde aquí: https://sites.google.com/a/chromium.org/chromedriver/downloads
Descomprima el controlador y guárdelo en algún lugar y luego actualice el chromedriver_path en el archivo de configuración de googlescraper scrape_config.py en la ruta donde guardó el controlador chromedriver_path = 'Drivers/chromedriver'
Descargue el último geckodriver desde aquí: https://github.com/mozilla/geckodriver/releases
Descomprima el controlador y guárdelo en algún lugar y luego actualice el geckodriver_path en el archivo de configuración de googlescraper scrape_config.py en la ruta donde guardó el controlador geckodriver_path = 'Drivers/geckodriver'
Actualice la siguiente configuración en el archivo de configuración de googlescraper scrape_config.py a sus valores.
# chrome driver executable path
# get chrome drivers here: https://chromedriver.storage.googleapis.com/index.html?path=2.41/
chromedriver_path = 'Drivers/chromedriver'
# geckodriver executable path
# get gecko drivers here: https://github.com/mozilla/geckodriver/releases
geckodriver_path = 'Drivers/geckodriver'
# path to firefox binary
firefox_binary_path = '/home/nikolai/firefox/firefox'
# path to chromium browser binary
chrome_binary_path = '/usr/bin/chromium-browser'
Instalar como se describe anteriormente. Asegúrese de tener los controladores de selenio para Chrome/Firefox si desea usar GooglesCraper en modo Selenium.
Ver todas las opciones
GoogleScraper -h
Raspe la palabra clave única "Apple" con el modo HTTP:
GoogleScraper -m http --keyword "apple" -v info
Raspe todas las palabras clave que se encuentran en el archivo SearchData/5words en modo Selenium usando Chrome en modo sin cabeza:
GoogleScraper -m selenium --sel-browser chrome --browser-mode headless --keyword-file SearchData/5words -v info
Raspe todas las palabras clave que están en
GoogleScraper -m http --keyword-file SearchData/some_words.txt --num-workers 5 --search-engines "bing,yahoo" --output-filename threaded-results.json -v debug
Haga una búsqueda de imágenes para la palabra clave "K2 Mountain" en Google:
GoogleScraper -s "google" -q "K2 mountain" -t image -v info
Esta es probablemente la característica más impresionante de Googlescraper. Puede raspar con miles de solicitudes por segundo si
Ejemplo de modo asíncrono:
Busque las palabras clave en el archivo de palabras clave SearchData/Marketing-Models-Brands.txt en Bing y Yahoo. Por defecto, el modo asíncrono genera 100 solicitudes al mismo tiempo. Esto significa alrededor de 100 solicitudes por segundo (depende de la conexión real ...).
GoogleScraper -s "bing,yahoo" --keyword-file SearchData/marketing-models-brands.txt -m http-async -v info -o marketing.json
Los resultados (resultados parciales, porque hubo demasiadas palabras clave para una dirección IP) pueden inspeccionarse en las salidas de archivo/marketing.json.
Googlescraper es muy complejo. Debido a que Googlescraper admite muchos motores de búsqueda y el HTML y JavaScript de esos proveedores de búsqueda cambian con frecuencia, a menudo es el caso que Googlescraper deja de funcionar para algún motor de búsqueda. Para detectar esto, puede ejecutar pruebas funcionales .
Por ejemplo, la prueba a continuación ejecuta una sesión de raspado para Google y Bing y prueba que los datos recopilados se ven más o menos bien.
python -m pytest Tests/functional_tests.py::GoogleScraperMinimalFunctionalTestCase
Googlescraper analiza los resultados del motor de búsqueda de Google (y muchos otros motores de búsqueda _ ) de manera fácil y rápida. Le permite extraer todos los enlaces encontrados y sus títulos y descripciones mediante programación, lo que le permite procesar aún más los datos raspados.
Hay escenarios de uso ilimitados:
En primer lugar, debe comprender que Googlescraper utiliza dos enfoques de raspado completamente diferentes :
urllib.request o módulos requests . Esto simula los paquetes HTTP enviados por navegadores reales.Mientras que el enfoque anterior se implementó primero, el enfoque posterior parece mucho más prometedor en comparación, porque los motores de búsqueda no tienen una manera fácil de detectarlo.
Googlescraper se implementa con las siguientes técnicas/software:
Actualmente son compatibles con los siguientes motores de búsqueda:
El raspado es un tema crítico y altamente complejo. Google y otros gigantes de los motores de búsqueda tienen una fuerte inclinación a hacer que los raspadores la vida sean lo más difícil posible. Hay varias formas para que los proveedores de motores de búsqueda detecten que un robot está utilizando su motor de búsqueda:
Entonces, el mayor obstáculo para abordar son los algoritmos de detección de JavaScript. No sé qué hace Google en su JavaScript, pero pronto lo investigaré más y luego decidiré si no es mejor cambiar las estrategias y cambiar a un enfoque que raspe simulando los navegadores en un entorno de navegador que puede ejecutar JavaScript. La red de cada uno de estos navegadores virtuales se proxifica y manipula de modo que se comporta como un agente de usuario físico real. Estoy bastante seguro de que debe ser posible manejar 20 de este tipo de sesiones de navegador de manera paralela sin estresar demasiado los recursos. El verdadero problema es como siempre la falta de buenos proxies ...
Como se mencionó anteriormente, hay varios inconvenientes al raspar con urllib.request o requests módulos y haciendo las redes por mi cuenta:
Los navegadores son sistemas de software enormemente complejos. Chrome tiene alrededor de 8 millones de línea de código y Firefox incluso 10 loc. Las grandes empresas invierten mucho dinero para impulsar la tecnología (HTML5, CSS3, nuevos estándares) y cada navegador tiene un comportamiento único. Por lo tanto, es casi imposible simular tal navegador manualmente con solicitudes HTTP. Esto significa que Google tiene numerosas formas de detectar anomalías e inconsistencias en el uso de la navegación. Solo la naturaleza dinámica de JavaScript hace que sea imposible raspar sin ser detectado.
Esto llora por un enfoque alternativo, que automatiza un navegador real con Python. Lo mejor sería controlar el navegador Chrome ya que Google tiene los menos incentivos para restringir las capacidades para su propio navegador nativo. Por lo tanto, necesito una forma de automatizar Chrome con Python y controlar varias instancias independientes con diferentes proxies establecidos. Entonces la salida del resultado crece linealmente con el número de proxies usados ...
Algunas tecnologías/software interesantes para hacerlo:
Probablemente la mejor manera de usar googlescraper es usarlo desde la línea de comando y disparar un comando como el siguiente:
GoogleScraper --keyword-file /tmp/keywords --search-engine bing --num-pages-for-keyword 3 --scrape-method selenium
Aquí Sel marca el modo de raspado como 'selenio'. Esto significa que los rascadores de googlescraper con navegadores reales. Esto es bastante poderoso, ya que puedes raspar mucho y muchos sitios (Google tiene dificultades para bloquear los navegadores reales). El argumento de Flag --keyword-file debe ser un archivo con palabras clave separadas por NewLines. Entonces: para cada línea de Google Query. Fácil, ¿no?
Además, la opción --num-pages-for-keyword significa que GooglesCraper alcanzará 3 páginas consecutivas para cada palabra clave.
Ejemplo de archivo de palabras clave:
keyword number one
how to become a good rapper
inurl:"index.php?sl=43"
filetype:.cfg
allintext:"You have a Mysql Error in your"
intitle:"admin config"
Best brothels in atlanta
Después del raspado, tendrá automáticamente una nueva base de datos SQLITE3 en el llamado google_scraper.db en el mismo directorio. Puede abrir e inspeccionar la base de datos con el comando:
GoogleScraper --shell
No debería ser un problema raspar 10'000 palabras clave en 2 horas . Si está realmente loco, establezca los navegadores máximos en la configuración un poco más alto (en la parte superior del archivo de script).
Si lo desea, puede especificar el Flag --proxy-file . Como argumento, debe pasar un archivo con proxies y con el siguiente formato:
protocol proxyhost:proxyport username:password
(...)
Ejemplo:
socks5 127.0.0.1:1080 blabla:12345
socks4 77.66.55.44:9999 elite:js@fkVA3(Va3)
En caso de que desee usar googlescraper.py en modo HTTP (lo que significa que se envían los encabezados HTTP sin procesar), úselo de la siguiente manera:
GoogleScraper -m http -p 1 -n 25 -q "white light"
Si tiene ganas de contactarme, hágalo y envíeme un correo. Puede encontrar mi información de contacto en mi blog.