Heim > Backend-Entwicklung > Python-Tutorial > Detailliertes Beispiel dafür, wie Python3 das Anforderungsmodul zum Crawlen von Seiteninhalten verwendet

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

黄舟
Freigeben: 2017-09-25 11:23:56
Original
5120 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich die tatsächliche Verwendung von Python3 zum Crawlen von Seiteninhalten mithilfe des Anforderungsmoduls 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
Nach dem Login kopieren
Installation erfolgreich, PIP-Version prüfen:


$ pip -V
Nach dem Login kopieren

2. Anfragen installieren Modul

Hier habe ich es über pip installiert:


$ pip install requests
Nach dem Login kopieren

Importanforderungen ausführen, falls vorhanden Wenn keine Fehler vorliegen, 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
Nach dem Login kopieren
Hinweis: Ich verwende hier die Python3-Installationsmethode. Wenn Sie Python2 verwenden, können Sie es mit dem folgenden Befehl installieren.


$ sudo pip install beautifulsoup4
Nach dem Login kopieren

4.Eine kurze Analyse des Anfragemoduls

1) Senden Sie eine Anfrage

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


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


>>> r = requests.get('http://www.jb51.net/article/124421.htm')
Nach dem Login kopieren
Hier wird ein Antwortobjekt namens r zurückgegeben. Wir können alle gewünschten Informationen von diesem Objekt erhalten. Get ist hier die Antwortmethode von http, Sie können sie also analog auch durch put, delete, post und head ersetzen.

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)
Nach dem Login kopieren
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
Nach dem Login kopieren
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'
Nach dem Login kopieren
5) Holen Sie sich den Antwortstatuscode

Wir können den Antwortstatus erkennen Code:


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

>>> r.status_code

200
Nach dem Login kopieren

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)
Nach dem Login kopieren
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 in gecrawlten Seiten in Python2 sind Senioren herzlich eingeladen, ihre Erfahrungen zu teilen, um zukünftigen Generationen wie mir zu helfen, Umwege zu vermeiden.

Das obige ist der detaillierte Inhalt vonDetailliertes Beispiel dafür, wie Python3 das Anforderungsmodul zum Crawlen von Seiteninhalten verwendet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage