Heim  >  Artikel  >  Backend-Entwicklung  >  Detailliertes Beispiel für Python3, das das Anforderungsmodul zum Crawlen von Seiteninhalten verwendet

Detailliertes Beispiel für Python3, das das Anforderungsmodul zum Crawlen von Seiteninhalten verwendet

巴扎黑
巴扎黑Original
2017-09-26 10:39:123296Durchsuche

Dieser Artikel stellt hauptsächlich die tatsächliche Verwendung von Python3 zum Crawlen von Seiteninhalten vor. Interessierte können mehr erfahren

1 >

Mein persönliches Desktop-System verwendet Linuxmint standardmäßig nicht, da Pip später zur Installation des Anforderungsmoduls verwendet wird.


$ sudo apt install python-pip
Installation erfolgreich, PIP-Version prüfen:


$ pip -V

2. Anfragen installieren Modul

Hier habe ich es über pip installiert:


$ pip install requests

Importanforderungen ausführen, falls nein Wenn Fehler angezeigt werden, bedeutet dies, dass die Installation erfolgreich war!

Überprüfen Sie, ob die Installation erfolgreich ist

3. Installieren Sie beautifulsoup4

Beautiful Soup ist ein Tool, das das kann kann aus der HTML- oder XML-Python-Bibliothek heruntergeladen werden, um Daten aus Dateien zu extrahieren. Es ermöglicht die übliche Dokumentennavigation und Möglichkeiten zum Suchen und Ändern von Dokumenten über Ihren bevorzugten Konverter. Beautiful Soup erspart Ihnen Stunden oder sogar Tage Arbeit.


$ sudo apt-get install python3-bs4
Hinweis: Ich verwende hier die Python3-Installationsmethode. Wenn Sie Python2 verwenden, können Sie es mit dem folgenden Befehl installieren.


$ sudo pip install beautifulsoup4

4.Eine kurze Analyse des Anfragemoduls

1) Senden Sie eine Anfrage

Importieren Sie zunächst natürlich das Modul „Anfragen“:


>>> import requests
Dann erhalten Sie die gecrawlte Ziel-Webseite. Hier nehme ich Folgendes als Beispiel:


>>> r = requests.get('http://www.jb51.net/article/124421.htm')
Hier wird ein Antwortobjekt namens r zurückgegeben. Wir können alle gewünschten Informationen von diesem Objekt erhalten. Hier handelt es sich um die Antwortmethode von http, sodass Sie sie analog auch durch Put, Delete, Post und Head ersetzen können.

2) URL-Parameter übergeben

Manchmal möchten wir Daten für die Abfragezeichenfolge der URL übergeben. Wenn Sie die URL manuell erstellen, werden die Daten als Schlüssel/Wert-Paare gefolgt von einem Fragezeichen in die URL eingefügt. Beispiel: cnblogs.com/get?key=val. Mit Anfragen können Sie das Schlüsselwortargument params verwenden, um diese Parameter als Wörterbuch mit Zeichenfolgen bereitzustellen.

Wenn wir beispielsweise bei Google nach dem Schlüsselwort „Python-Crawler“ suchen, können Parameter wie „newwindow“ (neues Fenster wird geöffnet), „q“ und „oq“ (Suchschlüsselwörter) manuell in die URL eingefügt werden, die Sie dann verwenden können der folgende Code:


>>> payload = {'newwindow': '1', 'q': 'python爬虫', 'oq': 'python爬虫'}

>>> r = requests.get("https://www.google.com/search", params=payload)
3) Antwortinhalt

Rufen Sie den Seitenantwortinhalt über r.text oder r.content ab.


>>> import requests

>>> r = requests.get('https://github.com/timeline.json')

>>> r.text
Anfragen dekodieren Inhalte automatisch vom Server. Die meisten Unicode-Zeichensätze können nahtlos dekodiert werden. Hier ist eine kleine Ergänzung zum Unterschied zwischen r.text und r.content:

resp.text gibt Unicode-Daten zurück.

resp.content gibt Byte-Daten zurück Binärdaten;

Wenn Sie also Text erhalten möchten, können Sie r.text übergeben, wenn Sie Bilder oder Dateien erhalten möchten, können Sie r.content übergeben.

4) Holen Sie sich die Webseitenkodierung


>>> r = requests.get('http://www.cnblogs.com/')

>>> r.encoding

'utf-8'
5) Holen Sie sich den Antwortstatuscode

Wir können den Antwortstatus erkennen Code:


>>> r = requests.get('http://www.cnblogs.com/')

>>> r.status_code

200

5. Falldemonstration

Das Unternehmen hat kürzlich ein OA-System eingeführt, hier verwende ich das Offizielle Dokumentationsseite Nehmen Sie dies als Beispiel und erfassen Sie nur nützliche Informationen wie Artikeltitel und Inhalt auf der Seite.

Demoumgebung

Betriebssystem: Linuxmint

Python-Version: Python 3.5.2

Verwendung von Modulen: Anfragen, beautifulsoup4

Code Wie folgt:


#!/usr/bin/env python
# -*- coding: utf-8 -*-
_author_ = 'GavinHsueh'

import requests
import bs4

#要抓取的目标页码地址
url = 'http://www.ranzhi.org/book/ranzhi/about-ranzhi-4.html'

#抓取页码内容,返回响应对象
response = requests.get(url)

#查看响应状态码
status_code = response.status_code

#使用BeautifulSoup解析代码,并锁定页码指定标签内容
content = bs4.BeautifulSoup(response.content.decode("utf-8"), "lxml")
element = content.find_all(id='book')

print(status_code)
print(element)
Das Programm wird ausgeführt und gibt das Crawling-Ergebnis zurück:

Der Crawl ist erfolgreich

Über das Problem verstümmelter Crawling-Ergebnisse

Tatsächlich habe ich zunächst direkt Python2 verwendet, das standardmäßig mit dem System geliefert wird, aber ich hatte lange Zeit damit zu kämpfen Das Problem der verstümmelten Kodierung des zurückgegebenen Inhalts hat verschiedene Lösungen gegoogelt, aber alle waren wirkungslos. Nachdem ich von Python2 „verrückt“ gemacht wurde, hatte ich keine andere Wahl, als Python3 ehrlich zu verwenden. Bezüglich des Problems verstümmelter Inhalte auf den gecrawlten Seiten von Python2 sind Senioren herzlich eingeladen, ihre Erfahrungen zu teilen, um zukünftigen Generationen wie mir zu helfen, Umwege zu vermeiden.

Postscript

Python verfügt über viele Crawler-bezogene Module. Zusätzlich zum Anforderungsmodul gibt es auch urllib, pycurl und tornado usw. Im Vergleich dazu finde ich persönlich, dass das Anfragemodul relativ einfach und benutzerfreundlich ist. Durch Text können Sie schnell lernen, das Anforderungsmodul von Python zum Crawlen von Seiteninhalten zu verwenden. Meine Fähigkeiten sind begrenzt. Wenn der Artikel Fehler enthält, können Sie sie mir gerne mitteilen. Wenn Sie Fragen zum Inhalt der von Python gecrawlten Seite haben, können Sie dies auch gerne mit allen besprechen.

Das obige ist der detaillierte Inhalt vonDetailliertes Beispiel für Python3, das das Anforderungsmodul zum Crawlen von Seiteninhalten verwendet. 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