1. Was ist ein Webcrawler

Webcrawler: Ein Programm, das automatisch Informationen aus dem Internet sammelt und dabei wertvolle Informationen aus dem Internet für uns erfasst.

2. Architektur des Python-Webcrawlers

Die Architektur eines Python-Webcrawlers besteht hauptsächlich aus fünf Teilen: dem Scheduler, dem URL-Manager, dem Webseiten-Downloader, dem Webseiten-Parser und der Anwendung (wertvolle gecrawlte Daten).

  • Scheduler:Entspricht der CPU eines Computers und ist hauptsächlich dafür verantwortlich, die Arbeit zwischen URL-Manager, Downloader und Parser zu koordinieren.
  • URL-Manager:Enthält URLs, die gecrawlt werden sollen, und bereits gecrawlte URLs, wodurch doppeltes Crawlen und zirkuläres Crawlen von URLs verhindert wird. Der URL-Manager wird hauptsächlich auf drei Arten implementiert: über Speicher, Datenbank und Cache-Datenbank.
  • Webseiten-Downloader:Lädt eine Webseite herunter, indem eine URL-Adresse übergeben wird, und wandelt die Webseite in eine Zeichenkette um. Webseiten-Downloader umfassen urllib2 (Pythons offizielles Basismodul), einschließlich Unterstützung für Login, Proxy und Cookies, sowie requests (Drittanbieter-Paket).
  • Webseiten-Parser:Parst eine Webseiten-Zeichenkette, extrahiert nützliche Informationen gemäß unseren Anforderungen und kann auch basierend auf der DOM-Baum-Parsing-Methode parsen. Webseiten-Parser umfassen reguläre Ausdrücke (intuitiv, wandeln Webseiten in Zeichenketten um und extrahieren wertvolle Informationen durch unscharfes Matching; wenn das Dokument komplex ist, wird diese Methode zum Extrahieren von Daten sehr schwierig), html.parser (in Python integriert), beautifulsoup (Drittanbieter-Plugin, das Pythons eingebauten html.parser oder lxml zum Parsen verwenden kann; es ist im Vergleich zu den anderen Methoden leistungsfähiger) und lxml (Drittanbieter-Plugin, das XML und HTML parsen kann). html.parser, beautifulsoup und lxml parsen alle mit der DOM-Baum-Methode.
  • Anwendung:Sie ist eine Anwendung, die aus aus Webseiten extrahierten nützlichen Daten besteht.

Das folgende Diagramm erklärt, wie der Scheduler die Arbeit koordiniert:

3. Drei Möglichkeiten, wie urllib2 das Herunterladen von Webseiten implementiert

#!/usr/bin/python # -*- coding: UTF-8 -*- import cookielib import urllib2 url = "http://www.baidu.com" response1 = urllib2.urlopen(url) print "Methode 1" # Statuscode abrufen; 200 bedeutet Erfolg print response1.getcode() # Ermittle die Länge des Webseiteninhalts print len(response1.read()) print "Methode 2" request = urllib2.Request(url) # Simuliere einen Mozilla-Browser zum Crawlen request.add_header("user-agent","Mozilla/5.0") response2 = urllib2.urlopen(request) print response2.getcode() print len(response2.read()) print "Methode 3" cookie = cookielib.CookieJar() # Füge urllib2 die Fähigkeit hinzu, Cookies zu verarbeiten opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie)) urllib2.install_opener(opener) response3 = urllib2.urlopen(url) print response3.getcode() print len(response3.read()) print cookie

4. Installation der Drittanbieter-Bibliothek Beautiful Soup

Beautiful Soup: Ein Python-Plugin eines Drittanbieters, das verwendet wird, um Daten aus XML und HTML zu extrahieren. Offizielle Website-Adressehttps://www.crummy.com/software/BeautifulSoup/

1. Beautiful Soup installieren

Öffnen Sie cmd (Eingabeaufforderung), navigieren Sie zum Ordner scripts im Installationsverzeichnis von Python (Version Python 2.7), geben Sie dir ein, um zu prüfen, ob pip.exe vorhanden ist. Falls ja, können Sie den in Python integrierten pip-Befehl zur Installation verwenden. Geben Sie den folgenden Befehl ein, um zu installieren:

pip install beautifulsoup4

2. Testen, ob die Installation erfolgreich war

Schreiben Sie eine Python-Datei und geben Sie Folgendes ein:

import bs4
print bs4

Führen Sie die Datei aus. Wenn sie normal ausgibt, war die Installation erfolgreich.

5. Verwenden von Beautiful Soup zum Parsen von HTML-Dateien

#!/usr/bin/python # -*- coding: UTF-8 -*- import re from bs4 import BeautifulSoup html_doc = """ <html><head><title>Die Geschichte des Siebenschläfers</title></head> <body> <p class="title"><b>Die Geschichte des Siebenschläfers</b></p> <p class="story">Es waren einmal drei kleine Schwestern; und ihre Namen waren <a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>, <a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> und <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>; und sie lebten am Grund eines Brunnens.</p> <p class="story">...</p> """ # BeautifulSoup-Parsing-Objekt erstellen soup = BeautifulSoup(html_doc,"html.parser",from_encoding="utf-8") # Alle Links abrufen links = soup.find_all('a') print "Alle Links" for link in links: print link.name,link['href'],link.get_text() print "Eine bestimmte URL-Adresse abrufen" link_node = soup.find('a',href="http://example.com/elsie") print link_node.name,link_node['href'],link_node['class'],link_node.get_text() print "Musterabgleich mit regulären Ausdrücken" link_node = soup.find('a',href=re.compile(r"ti")) print link_node.name,link_node['href'],link_node['class'],link_node.get_text() print "Den Text der P-Absätze abrufen" p_node = soup.find('p',class_='story') print p_node.name,p_node['class'],p_node.get_text()

Originaladresse: https://blog.csdn.net/sinat_29957455/article/details/70846427