Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Python-basierten Webcrawler-Technologie

Detaillierte Erläuterung der Python-basierten Webcrawler-Technologie

王林
王林Original
2023-06-17 10:28:44954Durchsuche

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.

  1. urllib

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)
  1. Requests

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)
  1. Selenium

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.

  1. Regulärer Ausdruck

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])
  1. BeautifulSoup

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)
  1. PyQuery

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.

  1. Dateimodul

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)
  1. MySQLdb

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()
  1. pymongo

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!

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