Heim > Artikel > Backend-Entwicklung > Detaillierte Erläuterung der Python-basierten Webcrawler-Technologie
Mit dem Aufkommen des Internets und des Big-Data-Zeitalters werden immer mehr Daten dynamisch generiert und auf Webseiten präsentiert, was neue Herausforderungen für die Datenerfassung und -verarbeitung mit sich bringt. Zu dieser Zeit entstand die Webcrawler-Technologie. Unter Webcrawler-Technologie versteht man eine Technologie, die durch das Schreiben von Programmen automatisch Informationen aus dem Internet abruft. Als leistungsstarke Programmiersprache bietet Python den Vorteil, dass es leicht zu erlernen, effizient und benutzerfreundlich ist und plattformübergreifend funktioniert. Es ist zu einer wichtigen Wahl bei der Entwicklung von Webcrawlern geworden.
In diesem Artikel wird die häufig verwendete Webcrawler-Technologie in Python systematisch vorgestellt, einschließlich Anforderungsmodul, Analysemodul, Speichermodul usw.
1. Anforderungsmodul
Das Anforderungsmodul ist der Kern des Webcrawlers. Es kann den Browser simulieren, um Anforderungen zu senden und den erforderlichen Seiteninhalt abzurufen. Zu den häufig verwendeten Anforderungsmodulen gehören urllib, Requests und Selenium.
urllib ist ein HTTP-Anforderungsmodul, das mit Python geliefert wird. Es kann Webseitendaten aus dem Netzwerk basierend auf der URL abrufen und unterstützt Funktionen wie URL-Codierung, Änderung des Anforderungsheaders, Post und Cookies. Zu den häufig verwendeten Funktionen gehören urllib.request.urlopen(), urllib.request.urlretrieve(), urllib.request.build_opener() usw.
Sie können den Quellcode der Website über die Funktion urllib.request.urlopen() abrufen:
import urllib.request response = urllib.request.urlopen('http://www.example.com/') source_code = response.read().decode('utf-8') print(source_code)
Requests ist eine Python-Bibliothek von Drittanbietern, die einfacher und benutzerfreundlicher als urllib ist und Cookies unterstützt , POST, Proxy und andere Funktionen. Zu den häufig verwendeten Funktionen gehören „requests.get()“, „requests.post()“, „requests.request()“ usw.
Sie können den Antwortinhalt über die Funktion „requests.get()“ abrufen:
import requests response = requests.get('http://www.example.com/') source_code = response.text print(source_code)
Selenium ist ein automatisiertes Testtool, das menschliche Vorgänge simulieren kann, indem ein Browser gestartet wird erreicht Rufen Sie Funktionen wie Seitendaten ab, die dynamisch von JS generiert werden. Zu den häufig verwendeten Funktionen gehören selenium.webdriver.Chrome(), selenium.webdriver.Firefox(), selenium.webdriver.PhantomJS() usw.
Rufen Sie den Quellcode der Webseite über Selenium ab:
from selenium import webdriver browser = webdriver.Chrome() # 打开Chrome浏览器 browser.get('http://www.example.com/') source_code = browser.page_source # 获取网页源代码 print(source_code)
2. Parsing-Modul
Nachdem Sie den Quellcode der Webseite erhalten haben, besteht der nächste Schritt darin, die Datei zu analysieren. Zu den häufig verwendeten Parsing-Modulen in Python gehören reguläre Ausdrücke, BeautifulSoup und PyQuery.
Regulärer Ausdruck ist ein magisches und leistungsstarkes Werkzeug, das Zeichenfolgen anhand von Mustern abgleichen und schnell die erforderlichen Daten extrahieren kann. Sie können das re-Modul in Python verwenden, um reguläre Ausdrücke aufzurufen.
Extrahieren Sie beispielsweise alle Links auf einer Webseite:
import re source_code = """ <!DOCTYPE html> <html> <head> <title>Example</title> </head> <body> <a href="http://www.example.com/">example</a> <a href="http://www.google.com/">google</a> </body> </html> """ pattern = re.compile('<a href="(.*?)">(.*?)</a>') # 匹配所有链接 results = re.findall(pattern, source_code) for result in results: print(result[0], result[1])
Beautiful Soup ist eine Bibliothek in Python, die HTML-Dateien oder XML-Dateien in eine Baumstruktur analysieren und so problemlos HTML-/XML-Dateidaten abrufen kann . Es unterstützt eine Vielzahl von Parsern. Die am häufigsten verwendeten sind Pythons integrierter html.parser, lxml und html5lib.
Parsen Sie beispielsweise alle Links auf der Webseite:
from bs4 import BeautifulSoup source_code = """ <!DOCTYPE html> <html> <head> <title>Example</title> </head> <body> <a href="http://www.example.com/">example</a> <a href="http://www.google.com/">google</a> </body> </html> """ soup = BeautifulSoup(source_code, 'html.parser') links = soup.find_all('a') for link in links: print(link.get('href'), link.string)
PyQuery ist eine jQuery-ähnliche Python-Bibliothek, die HTML-Dokumente in jQuery-ähnliche Strukturen konvertiert und über die der Inhalt der Webseite direkt abgerufen werden kann CSS-Selektorelement. Es hängt von der lxml-Bibliothek ab.
Parsen Sie zum Beispiel alle Links auf der Webseite:
from pyquery import PyQuery as pq source_code = """ <!DOCTYPE html> <html> <head> <title>Example</title> </head> <body> <a href="http://www.example.com/">example</a> <a href="http://www.google.com/">google</a> </body> </html> """ doc = pq(source_code) links = doc('a') for link in links: print(link.attrib['href'], link.text_content())
3. Speichermodul
Nachdem Sie die erforderlichen Daten erhalten haben, besteht der nächste Schritt darin, die Daten lokal oder in einer Datenbank zu speichern. Zu den häufig verwendeten Speichermodulen in Python gehören Dateimodule, MySQLdb, Pymongo usw.
Das Dateimodul kann Daten lokal speichern, darunter CSV, JSON, Excel usw. Unter diesen ist das CSV-Modul eines der am häufigsten verwendeten Dateimodule, das Daten in CSV-Dateien schreiben kann.
Schreiben Sie beispielsweise Daten in eine CSV-Datei:
import csv filename = 'example.csv' data = [['name', 'age', 'gender'], ['bob', 25, 'male'], ['alice', 22, 'female']] with open(filename, 'w', encoding='utf-8', newline='') as f: writer = csv.writer(f) for row in data: writer.writerow(row)
MySQLdb ist eine Bibliothek für Python zur Verbindung mit der MySQL-Datenbank. Sie unterstützt mehrere Funktionen wie Transaktionen und Cursor.
Speichern Sie beispielsweise Daten in einer MySQL-Datenbank:
import MySQLdb conn = MySQLdb.connect(host='localhost', port=3306, user='root', passwd='password', db='example', charset='utf8') cursor = conn.cursor() data = [('bob', 25, 'male'), ('alice', 22, 'female')] sql = "INSERT INTO users (name, age, gender) VALUES (%s, %s, %s)" try: cursor.executemany(sql, data) conn.commit() except: conn.rollback() cursor.close() conn.close()
pymongo ist eine Bibliothek für Python zur Verknüpfung mit der MongoDB-Datenbank. Sie unterstützt eine Vielzahl von Vorgängen, wie z. B. Hinzufügen, Löschen, Ändern und Abfragen .
Speichern Sie beispielsweise Daten in einer MongoDB-Datenbank:
import pymongo client = pymongo.MongoClient('mongodb://localhost:27017/') db = client['example'] collection = db['users'] data = [{'name': 'bob', 'age': 25, 'gender': 'male'}, {'name': 'alice', 'age': 22, 'gender': 'female'}] collection.insert_many(data)
IV. Die Web-Crawler-Technologie in Python umfasst das Anforderungsmodul, das Parsing-Modul und das Speichermodul Das Analysemodul ist ein wichtiger Kanal zum Abrufen von Daten, und das Speichermodul ist die einzige Möglichkeit, Daten beizubehalten. Python hat den Vorteil, dass es bei der Webcrawler-Entwicklung leicht zu erlernen, effizient und benutzerfreundlich sowie plattformübergreifend ist und sich zu einer wichtigen Wahl bei der Webcrawler-Entwicklung entwickelt hat.
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Python-basierten Webcrawler-Technologie. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!