GoogleCraper est un outil open source et restera un outil open source à l'avenir.
Le successeur moderne de Googlescraper, l'infrastructure générale rampant générale, restera open source et gratuit.
Cependant, certaines personnes voudraient avoir rapidement un service qui leur permet de gratter certaines données de Google ou de tout autre moteur de recherche. Pour cette raison, j'ai créé le service Web Scrapelul.com.
Dernier État: Féboraire 2019
Le successeur de Googlescraper peut être trouvé ici
Cela signifie que je ne maintiendrai plus ce projet. Tous les nouveaux développements se déroulent dans le projet ci-dessus.
Il y a plusieurs raisons pour lesquelles je ne continuerai pas à faire beaucoup d'efforts dans ce projet.
Pour cette raison, je vais continuer à développer une bibliothèque de grattage nommée https://www.npmjs.com/package/se-sccraper en javascript qui s'exécute sur le marionnettiste.
Vous pouvez télécharger l'application ici: https://www.npmjs.com/package/se-sccrap
Il prend en charge une large gamme de moteurs de recherche différents et est beaucoup plus efficace que GooglesCraper. La base de code est également beaucoup moins complexe sans filetage / file d'attente et capacités de journalisation complexes.
Pour des questions, vous pouvez me contacter sur mon wegpage et m'écrire un e-mail là-bas.
Ce projet est de retour à vivre après deux ans d'abandon. Dans les semaines à venir, je prendrai le temps de mettre à jour toutes les fonctionnalités des développements les plus récents. Cela englobe la mise à jour de tous les exploits et modifications du comportement du moteur de recherche. Après quelques semaines, vous pouvez vous attendre à ce que ce projet fonctionne à nouveau comme documenté ici.
GoogleCraper est écrit dans Python 3. Vous devez installer au moins Python 3.6. Le dernier développement majeur a été réalisé avec Python 3.7. Ainsi, lorsque vous utilisez Ubuntu 16.04 et Python 3.7 par exemple, veuillez installer Python 3 à partir des packages officiels. J'utilise la distribution Anaconda Python, qui fonctionne très bien pour moi.
De plus, vous devez installer le navigateur Chrome ainsi que le chromedriver pour le mode sélénium. Alternativement, installez le navigateur Firefox et le Geckodriver pour le mode sélénium. Voir les instructions ci-dessous.
Vous pouvez également installer GoogleCraper confortablement avec PIP:
virtualenv --python python3 env
source env/bin/activate
pip install GoogleScraper
En ce moment (septembre 2018) Ceci est découragé. Veuillez installer à partir des dernières sources GitHub.
Parfois, les choses les plus récentes et les plus impressionnantes ne sont pas disponibles dans le fromage (c'est comme ça qu'ils appellent https://pypi.python.org/pypi/pip). Par conséquent, vous souhaitez peut-être installer GooglesCraper à partir de la dernière source qui réside dans ce référentiel GitHub. Vous pouvez le faire comme ceci:
virtualenv --python python3 env
source env/bin/activate
pip install git+git://github.com/NikolaiT/GoogleScraper/
Veuillez noter que certaines fonctionnalités et exemples pourraient ne pas fonctionner comme prévu. Je ne garantit pas non plus que l'application s'exécute même. Je garantis seulement (dans une certaine mesure au moins) que l'installation de PIP produira une version utilisable.
Téléchargez le dernier ChromEdriver à partir d'ici: https://sites.google.com/a/chromium.org/chromedriver/downloads
Décompressez le pilote et enregistrez-le quelque part, puis mettez à jour le chromedriver_path dans le fichier de configuration de GoogleCraper scrape_config.py vers le chemin où vous avez enregistré le pilote chromedriver_path = 'Drivers/chromedriver'
Téléchargez le dernier geckodriver à partir d'ici: https://github.com/mozilla/geckodriver/releases
Décompressez le pilote et enregistrez-le quelque part, puis mettez à jour le geckodriver_path dans le fichier de configuration GoogleCraper scrape_config.py vers le chemin où vous avez enregistré le pilote geckodriver_path = 'Drivers/geckodriver'
Mettez à jour les paramètres suivants dans le fichier de configuration GoogleCraper scrape_config.py vers vos valeurs.
# 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'
Installer comme décrit ci-dessus. Assurez-vous que vous avez les pilotes de sélénium pour Chrome / Firefox si vous souhaitez utiliser Googlescraper en mode sélénium.
Voir toutes les options
GoogleScraper -h
Grattez le mot-clé unique "Apple" avec le mode HTTP:
GoogleScraper -m http --keyword "apple" -v info
Grattez tous les mots clés qui se trouvent dans le fichier SearchData/5words en mode sélénium à l'aide de Chrome en mode sans tête:
GoogleScraper -m selenium --sel-browser chrome --browser-mode headless --keyword-file SearchData/5words -v info
Rayer tous les mots clés qui sont
GoogleScraper -m http --keyword-file SearchData/some_words.txt --num-workers 5 --search-engines "bing,yahoo" --output-filename threaded-results.json -v debug
Faites une recherche d'image du mot-clé "K2 Mountain" sur Google:
GoogleScraper -s "google" -q "K2 mountain" -t image -v info
C'est probablement la fonctionnalité la plus impressionnante de GoogleCraper. Vous pouvez gratter avec des milliers de demandes par seconde si
Exemple pour le mode asynchrone:
Recherchez les mots clés dans le fichier clé SearchData / marketing-modes-Brands.txt sur Bing et Yahoo. Par défaut, le mode asynchrone engendre 100 demandes en même temps. Cela signifie environ 100 demandes par seconde (dépend de la connexion réelle ...).
GoogleScraper -s "bing,yahoo" --keyword-file SearchData/marketing-models-brands.txt -m http-async -v info -o marketing.json
Les résultats (résultats partiels, car il y avait trop de mots clés pour une adresse IP) peuvent être inspectés dans les sorties de fichiers / marketing.json.
Googlescraper est extrêmement complexe. Étant donné que GoogleCraper prend en charge de nombreux moteurs de recherche et que le HTML et le JavaScript de ces fournisseurs de recherche changent fréquemment, il est souvent le cas que GooglesCraper cesse de fonctionner pour un moteur de recherche. Pour repérer cela, vous pouvez exécuter des tests fonctionnels .
Par exemple, le test ci-dessous exécute une session de grattage pour Google et Bing et les tests que les données recueillies semblent plus ou moins correctes.
python -m pytest Tests/functional_tests.py::GoogleScraperMinimalFunctionalTestCase
GoogleCraper analyse les résultats des moteurs de recherche Google (et de nombreux autres moteurs de recherche _ ) facilement et rapidement. Il vous permet d'extraire tous les liens trouvés et leurs titres et descriptions par programme, ce qui vous permet de traiter davantage les données grattées.
Il y a des scénarios d'utilisation illimités:
Tout d'abord, vous avez besoin de comprendre que GoogleCraper utilise deux approches de grattage complètement différentes :
urllib.request ou requests . Cela simule les paquets HTTP envoyés par de vrais navigateurs.Alors que l'ancienne approche a été mise en œuvre en premier, l'approche ultérieure semble beaucoup plus prometteuse en comparaison, car les moteurs de recherche n'ont pas de moyen facile de le détecter.
GoogleCraper est implémenté avec les techniques / logiciels suivants:
Actuellement, les moteurs de recherche suivants sont pris en charge:
Le grattage est un sujet critique et très complexe. Google et d'autres géants des moteurs de recherche ont une forte tendance à rendre la vie des grattoirs aussi difficile que possible. Il existe plusieurs façons pour les fournisseurs de moteurs de recherche de détecter qu'un robot utilise son moteur de recherche:
Le plus grand obstacle à attaquer est donc les algorithmes de détection JavaScript. Je ne sais pas ce que fait Google dans leur JavaScript, mais je vais bientôt le étudier plus loin et ensuite décider s'il n'est pas préférable de changer de stratégie et de passer à une approche qui éraforait en simulant les navigateurs dans un environnement de navigateur qui peut exécuter JavaScript. Le réseau de chacun de ces navigateurs virtuels est proxifié et manipulé de telle sorte qu'il se comporte comme un véritable agent utilisateur physique. Je suis à peu près sûr qu'il doit être possible de gérer 20 de ces séances de navigateur de manière parallèle sans trop stress les ressources. Le vrai problème est comme toujours le manque de bons mandataires ...
Comme mentionné ci-dessus, il y a plusieurs inconvénients lors de la gratte avec urllib.request ou requests des modules et en faisant le réseautage par moi-même:
Les navigateurs sont des systèmes logiciels extrêmement complexes. Chrome a environ 8 millions de lignes de code et Firefox même 10 LOC. D'énormes entreprises investissent beaucoup d'argent pour faire avancer la technologie (HTML5, CSS3, de nouvelles normes) et chaque navigateur a un comportement unique. Par conséquent, il est presque impossible de simuler manuellement un tel navigateur avec les demandes HTTP. Cela signifie que Google a de nombreuses façons de détecter les anomalies et les incohérences dans l'utilisation de la navigation. Seul la nature dynamique de JavaScript rend impossible la rupture non détectée.
Cela pleure pour une approche alternative, qui automatise un véritable navigateur avec Python. Le meilleur serait de contrôler le navigateur Chrome, car Google a le moins d'incitations à restreindre les capacités de leur propre navigateur natif. Par conséquent, j'ai besoin d'un moyen d'automatiser le chrome avec Python et de contrôler plusieurs instances indépendantes avec différents indicateurs de proxys. Ensuite, la sortie du résultat augmente linéairement avec le nombre de proxys utilisés ...
Quelques technologies / logiciels intéressants pour le faire:
La meilleure façon d'utiliser GooglesCraper est probablement de l'utiliser à partir de la ligne de commande et de tirer une commande comme ce qui suit:
GoogleScraper --keyword-file /tmp/keywords --search-engine bing --num-pages-for-keyword 3 --scrape-method selenium
Ici, Sel marque le mode de grattage comme «sélénium». Cela signifie googlescraper.py éraflures avec de vrais navigateurs. C'est assez puissant, car vous pouvez gratter longtemps et beaucoup de sites (Google a du mal à bloquer les véritables navigateurs). L'argument du Flag --keyword-file doit être un fichier avec des mots clés séparés par Newlines. Donc: pour chaque requête Google une ligne. Facile, n'est-ce pas?
En outre, l'option --num-pages-for-keyword signifie que GoogleCraper va récupérer 3 pages consécutives pour chaque mot-clé.
Exemple de mots clés:
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
Après le grattage, vous aurez automatiquement une nouvelle base de données SQLite3 dans la nommée google_scraper.db nommée dans le même répertoire. Vous pouvez ouvrir et inspecter la base de données avec la commande:
GoogleScraper --shell
Ce ne devrait pas être un problème pour gratter les mots clés de 10'000 en 2 heures . Si vous êtes vraiment fou, définissez les navigateurs maximaux dans la configuration un peu plus haut (en haut du fichier de script).
Si vous le souhaitez, vous pouvez spécifier l'indicateur --proxy-file . En tant qu'argument, vous devez transmettre un fichier avec des proxys et avec le format suivant:
protocol proxyhost:proxyport username:password
(...)
Exemple:
socks5 127.0.0.1:1080 blabla:12345
socks4 77.66.55.44:9999 elite:js@fkVA3(Va3)
Dans le cas où vous souhaitez utiliser GoogleScraper.py en mode HTTP (ce qui signifie que les en-têtes HTTP bruts sont envoyés), utilisez-le comme suit:
GoogleScraper -m http -p 1 -n 25 -q "white light"
Si vous avez envie de me contacter, faites-le et envoyez-moi un courrier. Vous pouvez trouver mes coordonnées sur mon blog.