GoogleScraper ist ein Open -Source -Tool und bleibt in Zukunft ein Open -Source -Tool.
Auch der moderne Nachfolger von Googlescraper, der allgemeine Kriechinfrastruktur, bleibt Open Source und Free.
Einige Leute möchten jedoch schnell einen Dienst haben, mit dem sie einige Daten von Google oder einer anderen Suchmaschine abkratzen können. Aus diesem Grund habe ich den Webdienst crapeeuse.com erstellt.
Letzter Staat: Februar 2019
Der Nachfolger von Googlescraper finden Sie hier
Dies bedeutet, dass ich dieses Projekt nicht mehr beibehalten werde. Alle Neuentwicklung gilt im obigen Projekt.
Es gibt mehrere Gründe, warum ich dieses Projekt nicht weiterhin viel Mühe geben werde.
Aus diesem Grund werde ich weiterhin eine Scraping-Bibliothek namens https://www.npmjs.com/package/se-scraper in javaScript entwickeln, die über Puppenspieler läuft.
Sie können die App hier herunterladen: https://www.npmjs.com/package/se-scraper
Es unterstützt eine Vielzahl verschiedener Suchmaschinen und ist viel effizienter als Googlescraper. Die Codebasis ist auch viel weniger komplex, ohne dass sich die Faden-/Warteschlangen- und komplexe Protokollierungsfunktionen befinden.
Für Fragen können Sie mich auf meiner WEGPage kontaktieren und mir dort eine E -Mail schreiben.
Dieses Projekt ist nach zwei Jahren der Verlassenheit wieder lebend. In den kommenden Wochen werde ich mir einige Zeit nehmen, um alle Funktionen auf die neuesten Entwicklungen zu aktualisieren. Dies umfasst die Aktualisierung aller Regexes und Änderungen im Suchmaschinenverhalten. Nach ein paar Wochen können Sie erwarten, dass dieses Projekt hier wieder funktioniert, wie hier dokumentiert.
GoogleScraper ist in Python geschrieben. 3. Sie sollten mindestens Python 3.6 installieren. Die letzte große Entwicklung war mit Python 3.7 abgeschlossen. Wenn Sie also Ubuntu 16.04 und Python 3.7 verwenden, installieren Sie Python 3 bitte aus den offiziellen Paketen. Ich benutze die Anaconda Python Distribution, die für mich sehr gut funktioniert.
Darüber hinaus müssen Sie den Chrombrowser und den Chromedriver für den Selenium -Modus installieren. Alternativ installieren Sie den Firefox -Browser und den Geckodriver für den Selenium -Modus. Siehe Anweisungen unten.
Sie können Googlescraper auch bequem mit PIP installieren:
virtualenv --python python3 env
source env/bin/activate
pip install GoogleScraper
Im Moment (September 2018) ist dies entmutigt. Bitte installieren Sie die neuesten Github -Quellen.
Manchmal sind das neueste und großartigste Zeug im Cheeseshop nicht erhältlich (so nennen sie https://pypi.python.org/pypi/pip). Daher möchten Sie GoogleScraper möglicherweise aus der neuesten Quelle installieren, die sich in diesem Github -Repository befindet. Sie können dies so tun:
virtualenv --python python3 env
source env/bin/activate
pip install git+git://github.com/NikolaiT/GoogleScraper/
Bitte beachten Sie, dass einige Funktionen und Beispiele möglicherweise nicht wie erwartet funktionieren. Ich garantiere auch nicht, dass die App überhaupt ausgeführt wird. Ich garantiere nur (zumindest bis zu einem gewissen Grad), dass die Installation von PIP eine nutzbare Version liefert.
Laden Sie hier den neuesten Chromedriver herunter: https://sites.google.com/a/chromium.org/chromedriver/downloads
Entpacken Sie den Treiber und speichern Sie ihn irgendwo und aktualisieren Sie dann den chromedriver_path in der googlescraper -Konfigurationsdatei scrape_config.py auf den Pfad, in dem Sie den Treiber chromedriver_path = 'Drivers/chromedriver' gespeichert haben.
Laden Sie hier den neuesten Geckodriver herunter: https://github.com/mozilla/geckodriver/releases
Entpacken Sie den Treiber und speichern Sie ihn irgendwo und aktualisieren Sie dann den geckodriver_path in der GoogleScraper -Konfigurationsdatei scrape_config.py auf den Pfad, in dem Sie den Treiber geckodriver_path = 'Drivers/geckodriver' gespeichert haben.
Aktualisieren Sie die folgenden Einstellungen in der Googlescraper -Konfigurationsdatei scrape_config.py auf Ihre Werte.
# 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'
Wie oben beschrieben installieren. Stellen Sie sicher, dass Sie über die Selenium -Treiber für Chrome/Firefox verfügen, wenn Sie Googlescraper im Selen -Modus verwenden möchten.
Sehen Sie alle Optionen
GoogleScraper -h
Kratzen Sie das einzelne Schlüsselwort "Apple" mit dem HTTP -Modus:
GoogleScraper -m http --keyword "apple" -v info
Kratzen Sie alle Schlüsselwörter, die sich in der Datei SearchData/5words im Selenium -Modus befinden, mit Chrome im kopflosen Modus:
GoogleScraper -m selenium --sel-browser chrome --browser-mode headless --keyword-file SearchData/5words -v info
Kratzen Sie alle Schlüsselwörter, in denen sich befinden
GoogleScraper -m http --keyword-file SearchData/some_words.txt --num-workers 5 --search-engines "bing,yahoo" --output-filename threaded-results.json -v debug
Führen Sie eine Bildsuche nach dem Schlüsselwort "K2 Mountain" auf Google durch:
GoogleScraper -s "google" -q "K2 mountain" -t image -v info
Dies ist wahrscheinlich die großartigste Funktion von Googlescraper. Sie können mit Tausenden von Anfragen pro Sekunde kratzen, wenn beides
Beispiel für den asynchronen Modus:
Suchen Sie die Schlüsselwörter in der Keyword-Datei SearchData/Marketing-Models-Brands.txt auf Bing und Yahoo. Standardmäßig laichen der asynchrone Modus 100 Anfragen gleichzeitig. Dies bedeutet rund 100 Anfragen pro Sekunde (hängt von der tatsächlichen Verbindung ab ...).
GoogleScraper -s "bing,yahoo" --keyword-file SearchData/marketing-models-brands.txt -m http-async -v info -o marketing.json
Die Ergebnisse (Teilergebnisse, da es zu viele Schlüsselwörter für eine IP -Adresse gab) können in den Dateiausgängen/Marketing.json inspiziert werden.
Googlescraper ist sehr komplex. Da Googlescraper viele Suchmaschinen unterstützt und die HTML- und JavaScript dieser Suchanbieter häufig ändert, ist es häufig der Fall, dass Googlescraper die Funktion für eine Suchmaschine nicht mehr funktioniert. Um dies zu erkennen, können Sie Funktionstests ausführen.
Zum Beispiel wird im folgenden Test eine Scraping -Sitzung für Google und Bing durchgeführt und testet, dass die gesammelten Daten mehr oder weniger in Ordnung aussehen.
python -m pytest Tests/functional_tests.py::GoogleScraperMinimalFunctionalTestCase
GoogleScraper spielt die Google -Suchmaschinenergebnisse (und viele andere Suchmaschinen _ ) einfach und auf schnelle Weise. Sie können alle gefundenen Links und deren Titel und Beschreibungen programmgesteuert extrahieren, wodurch Sie abgekratzte Daten weiter verarbeitet werden können.
Es gibt unbegrenzte Nutzungsszenarien :
Zunächst müssen Sie verstehen, dass GoogleScraper zwei völlig unterschiedliche Krabbungsansätze verwendet:
urllib.request oder requests Module an. Dies simuliert die von echten Browsern gesendeten HTTP -Pakete.Während der frühere Ansatz zuerst implementiert wurde, sieht der spätere Ansatz im Vergleich viel vielversprechender aus, da Suchmaschinen ihn nicht einfach erkennen können.
GoogleScraper wird mit den folgenden Techniken/Software implementiert:
Derzeit werden die folgenden Suchmaschinen unterstützt:
Scraping ist ein kritisches und hochkomplexes Thema. Google und andere Suchmaschinenriesen haben eine starke Neigung, die Krafter so hart wie möglich zu gestalten. Es gibt verschiedene Möglichkeiten für die Suchmaschinenanbieter, zu erkennen, dass ein Roboter seine Suchmaschine verwendet:
Die größte Hürde, die sich angeht, sind die JavaScript -Erkennungsalgorithmen. Ich weiß nicht, was Google in seinem JavaScript tut, aber ich werde es bald weiter untersuchen und dann entscheiden, ob es nicht besser ist, Strategien zu ändern und zu einem Ansatz zu wechseln, der durch Simulation von Browsern in einer Browser ähnlichen Umgebung , die JavaScript ausführen kann, simuliert. Die Vernetzung jedes dieser virtuellen Browser wird vergrößert und manipuliert, so dass es sich wie ein echter physischer Benutzeragenten verhält. Ich bin mir ziemlich sicher, dass es möglich sein muss, 20 solcher Browser -Sitzungen parallel zu behandeln, ohne die Ressourcen zu sehr zu belasten. Das eigentliche Problem ist wie immer der Mangel an guten Stellvertretern ...
Wie oben erwähnt, gibt es mehrere Nachteile, wenn Sie mit urllib.request oder Modulen requests und die Networking alleine durchführen:
Browser sind enorm komplexe Softwaresysteme. Chrome hat rund 8 Millionen Code- und Firefox -Linien und sogar 10 loc. Riesige Unternehmen investieren viel Geld, um die Technologie voranzutreiben (HTML5, CSS3, neue Standards), und jeder Browser hat ein einzigartiges Verhalten. Daher ist es fast unmöglich, einen solchen Browser manuell mit HTTP -Anfragen manuell zu simulieren. Dies bedeutet, dass Google zahlreiche Möglichkeiten hat, Anomalien und Inkonsistenzen bei der Browsernutzung zu erkennen. Allein die dynamische Natur von JavaScript macht es unmöglich, unentdeckt zu kratzen.
Dies schreit nach einem alternativen Ansatz, der einen echten Browser mit Python automatisiert. Am besten ist es, den Chrome -Browser zu steuern, da Google die geringsten Anreize hat, die Funktionen für ihren eigenen nativen Browser einzuschränken. Daher brauche ich eine Möglichkeit, Chrom mit Python zu automatisieren und mehrere unabhängige Instanzen mit verschiedenen Proxys zu steuern. Dann wächst die Ausgabe des Ergebniss linear mit der Anzahl der gebrauchten Proxys ...
Einige interessante Technologien/Software dazu:
Der wahrscheinlich beste Weg, Googlescraper zu verwenden, besteht darin, es aus der Befehlszeile zu verwenden und einen Befehl wie die folgenden zu entlassen:
GoogleScraper --keyword-file /tmp/keywords --search-engine bing --num-pages-for-keyword 3 --scrape-method selenium
Hier markiert SEL den Scraping -Modus als "Selen". Dies bedeutet googlescraper.py -Kratzer mit echten Browsern. Dies ist ziemlich mächtig, da Sie lange und viele Websites kratzen können (Google fällt es schwer, echte Browser zu blockieren). Das Argument der Flagge --keyword-file muss eine Datei mit Schlüsselwörtern sein, die von Newlines getrennt sind. Also: Für jede Google -Abfrage eine Zeile. Einfach, ist es nicht?
Darüber hinaus bedeutet die Option --num-pages-for-keyword dass GoogleScraper 3 aufeinanderfolgende Seiten für jedes Schlüsselwort abholt.
Beispiel Keyword-Datei:
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
Nach dem Scraping haben Sie im selben Verzeichnis automatisch eine neue SQLite3 -Datenbank im benannten google_scraper.db . Sie können die Datenbank mit dem Befehl öffnen und inspizieren:
GoogleScraper --shell
Es sollte kein Problem sein, 10'000 Schlüsselwörter in 2 Stunden zu kratzen. Wenn Sie wirklich verrückt sind, stellen Sie die maximalen Browser in der Konfiguration ein wenig höher (oben in der Skriptdatei).
Wenn Sie möchten, können Sie das Flag --proxy-file angeben. Als Argument müssen Sie eine Datei mit Proxys und mit dem folgenden Format übergeben:
protocol proxyhost:proxyport username:password
(...)
Beispiel:
socks5 127.0.0.1:1080 blabla:12345
socks4 77.66.55.44:9999 elite:js@fkVA3(Va3)
Wenn Sie GoogleScraper.py im HTTP -Modus verwenden möchten (was bedeutet, dass RAW -HTTP -Header gesendet werden), verwenden Sie es wie folgt:
GoogleScraper -m http -p 1 -n 25 -q "white light"
Wenn Sie Lust haben, mich zu kontaktieren, tun Sie dies und senden Sie mir eine Post. Sie finden meine Kontaktinformationen in meinem Blog.