Scraping Avito ohne kopflosen Browser

Kürzlich veröffentlichte Habré einen Artikel über das Scraping moderner Websites ohne kopflose Browser . In den Kommentaren wurde vorgeschlagen, dass es ohne kopflosen Browser nicht funktioniert, eine Telefonnummer aus einer Anzeige auf Avito oder Yulia zu erhalten. Ich möchte dies widerlegen. Unten ist ein Python-Skript mit weniger als 100 Codezeilen, das "avito" erfolgreich analysiert.





Ich bin kein Spezialist für das "Parsen" von Websites und dies ist nicht meine Aufgabe, aber es ist nicht ungewöhnlich, dass ich dies tue, um meine Arbeit und nicht nur Aufgaben zu lösen. Zum Beispiel müssen Sie den Kontostand eines persönlichen Kontos in einem Dienst (Mobilfunkbetreiber) abrufen, der keine API dafür hat, oder, was ziemlich traurig ist, eine Liste von Domains vom Registrar (einem anderen), der ebenfalls keine API hat.





Wie im Artikel, einige Kommentare, die mich dazu veranlassten, diesen Beitrag zu schreiben, verwende ich auch Python und die Anforderungsbibliothek. Wenn Sie keine "interne" API finden, müssen Sie die BeautifulSoup-Bibliothek einschließen. Aber hier stellte sich heraus, dass alles viel einfacher war.





Wenn Sie die "Vollversion" der Website https://avito.ru öffnen und versuchen, die Telefonnummer zu kopieren, wird deutlich, dass die Telefonnummer auf der Website nicht geschrieben, sondern gezeichnet ist. In der mobilen Version der Website wird die Nummer jedoch im Text angegeben. Sie können dies überprüfen, indem Sie sich die Antworten ansehen, wenn Sie in den Entwicklertools des Browsers auf die Schaltfläche "Anrufen" klicken.





Ich werde mein Skript nicht im Detail analysieren. Der Code enthält genügend Kommentare, um zu verstehen, was in welchem ​​Stadium geschieht. Kurz gesagt, die mobile Version der Site wird verwendet, Variablen zum Durchsuchen der Site werden deklariert, sowie zwei Variablen "Schlüssel" und "Cookie", die detaillierter beschrieben werden. Anschließend wird der Prozess zum Abrufen von Cookies durch Öffnen der Hauptseite gestartet und anschließend ein Zyklus gestartet, der die Daten sammelt ID aller Anzeigen, die alle Seiten durchlaufen. Nachdem Sie alle Anzeigen im zweiten Zyklus erhalten haben, gehen Sie sie durch und erhalten Sie die Informationen, die uns interessieren.





Screenshot des Skripts:





, .. API. - API. , , . . - . - 100 .





"key" "cookie", key , , - . cookie , "", , IP , "" .





Wenn es interessant ist, werde ich Ihnen mehr darüber erzählen, wie ich nach einer API gesucht habe, oder ich kann ein ähnliches Beispiel für den "Whirligig" schreiben.





Das Skript selbst








All Articles