Heim  >  Artikel  >  Backend-Entwicklung  >  Der Python-Crawler verwendet Browser-Cookies: browsercookie

Der Python-Crawler verwendet Browser-Cookies: browsercookie

JUAN
JUANOriginal
2019-02-18 10:47:362825Durchsuche


Viele Leute, die Python verwenden, haben möglicherweise einen Webcrawler geschrieben. Es ist in der Tat eine angenehme Sache, Netzwerkdaten automatisch abzurufen, und Python ist sehr hilfreich Vergnügen. Allerdings stoßen Crawler häufig auf verschiedene Anmelde- und Verifizierungshindernisse, was frustrierend ist (Website: Es ist auch sehr frustrierend, jeden Tag auf verschiedene Crawler zu stoßen, die unsere Website angreifen ~). Reptilien und Anti-Reptilien sind nur ein Katz-und-Maus-Spiel, und die beiden sind immer wieder miteinander verwickelt.

Aufgrund der zustandslosen Natur des http-Protokolls wird die Anmeldeüberprüfung durch die Weitergabe von Cookies implementiert. Sobald Sie sich über den Browser anmelden, wird das Cookie der Anmeldeinformationen vom Browser gespeichert. Wenn Sie die Website das nächste Mal öffnen, ruft der Browser automatisch die gespeicherten Cookies ab. Solange die Cookies noch nicht abgelaufen sind, sind Sie weiterhin auf der Website angemeldet.

Das Browsercookie-Modul ist ein solches Tool, um gespeicherte Cookies aus dem Browser zu extrahieren. Es handelt sich um ein sehr nützliches Crawler-Tool, mit dem Sie problemlos Webinhalte herunterladen können, für die eine Anmeldung erforderlich ist, indem Sie die Cookies Ihres Browsers in ein Cookiejar-Objekt laden.

Installieren

pip install browsercookie

In Windows-Systemen löst das integrierte SQLite-Modul beim Laden der Firefox-Datenbank einen Fehler aus. Die Version von SQLite muss aktualisiert werden:
pip install pysqlite

Verwendung

Das Folgende ist ein Beispiel für das Extrahieren des Titels aus der Webseite:

>>> import re
>>> get_title = lambda html: re.findall(&#39;<title>(.*?)</title>&#39;, html, flags=re.DOTALL)[0].strip()

Das Folgende wird ohne Anmeldung heruntergeladen. Titel:

>>> import urllib2
>>> url = &#39; 
>>> public_html = urllib2.urlopen(url).read()
>>> get_title(public_html)&#39;Git and Mercurial code management for teams&#39;

Als nächstes verwenden Sie Browsercookie, um das Cookie von FireFox abzurufen, sich bei Bitbucket anzumelden, und laden es herunter:

>>> import browsercookie
>>> cj = browsercookie.firefox()
>>> opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
>>> login_html = opener.open(url).read()
>>> get_title(login_html)&#39;richardpenman / home &mdash; Bitbucket&#39;

Das Obige ist der Code für Python2, versuchen Sie es Wieder Python3:

>>> import urllib.request
>>> public_html = urllib.request.urlopen(url).read()
>>> opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))

Sie können sehen, dass Ihr Benutzername im Titel erscheint, was darauf hinweist, dass das Browser-Cookie-Modul erfolgreich Cookies von Firefox geladen hat.

Das Folgende ist ein Beispiel für die Verwendung von Anfragen. Dieses Mal laden wir Cookies von Chrome. Natürlich müssen Sie sich vorher bei Bitbucket anmelden:

>>> import requests
>>> cj = browsercookie.chrome()
>>> r = requests.get(url, cookies=cj)
>>> get_title(r.content)&#39;richardpenman / home &mdash; Bitbucket&#39;

Falls nicht Ob Sie wissen oder egal, welcher Browser Sie über die erforderlichen Cookies verfügt, können Sie folgendermaßen tun:

>>> cj = browsercookie.load()
>>> r = requests.get(url, cookies=cj)
>>> get_title(r.content)&#39;richardpenman / home &mdash; Bitbucket&#39;

Unterstützt

Derzeit unterstützt dieses Modul die folgenden Plattformen:

Chrome: Linux , OSX, Windows
Firefox: Linux , OSX, Windows

Derzeit gibt es nicht viele Browserversionen, die dieses Modul getestet hat. Bei der Verwendung können Sie Fragen an den Autor stellen:

https://bitbucket .org/richardpenman/browsercookie/



Das obige ist der detaillierte Inhalt vonDer Python-Crawler verwendet Browser-Cookies: browsercookie. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn