Web Scraping, der Prozess des Extrahierens von Daten von Websites, hat sich zu einer leistungsstarken Technik entwickelt, um Informationen aus den riesigen Weiten des Internets zu sammeln. In diesem Tutorial erkunden wir verschiedene Python-Bibliotheken und -Module, die häufig für Web Scraping verwendet werden, und gehen der Frage nach, warum Python 3 die bevorzugte Wahl für diese Aufgabe ist.
Wesentliche Pakete und Tools für Python Web Scraping
Die neueste Version von Python bietet einen umfangreichen Satz an Tools und Bibliotheken, die speziell für das Web-Scraping entwickelt wurden und es einfacher denn je machen, Daten effizient und effektiv aus dem Web abzurufen.
Inhaltsverzeichnis
- Modul „Anfragen“.
- BeautifulSoup-Bibliothek
- Selen
- Lxml
- Urllib-Modul
- PyautoGUI
- Zeitplan
- Warum Python Web Scraping?
Modul „Anfragen“.
Die Anforderungsbibliothek wird zum Senden von HTTP-Anfragen an eine bestimmte URL verwendet und gibt die Antwort zurück. Python-Anfragen bieten integrierte Funktionen zum Verwalten von Anfragen und Antworten.
pip install requests>
Beispiel: Eine Anfrage stellen
Das Python-Anfragemodul verfügt über mehrere integrierte Methoden, um HTTP-Anfragen an einen bestimmten URI mithilfe von GET-, POST-, PUT-, PATCH- oder HEAD-Anfragen zu stellen. Eine HTTP-Anfrage soll entweder Daten von einem angegebenen URI abrufen oder Daten an einen Server übertragen. Es fungiert als Anfrage-Antwort-Protokoll zwischen einem Client und einem Server. Hier verwenden wir die GET-Anfrage. Der GET-Methode wird verwendet, um Informationen vom angegebenen Server mithilfe eines bestimmten URI abzurufen. Die GET-Methode sendet die codierten Benutzerinformationen an die Seitenanforderung angehängt.
Python
import requests # Making a GET request r = requests.get('https://www.techcodeview.com) # check status code for response received # success code - 200 print(r) # print content of request print(r.content)> Ausgabe

Weitere Informationen finden Sie in unserem Tutorial zu Python-Anfragen .
String in ganze Zahlen umwandeln
BeautifulSoup-Bibliothek
Beautiful Soup bietet einige einfache Methoden und pythonische Phrasen zum Führen, Durchsuchen und Ändern eines Parse-Baums: ein Toolkit zum Studieren eines Dokuments und zum Entfernen dessen, was Sie benötigen. Um eine Anwendung zu dokumentieren, ist nicht viel Code erforderlich.
Beautiful Soup konvertiert eingehende Datensätze automatisch in Unicode und ausgehende Formulare in UTF-8. Sie müssen nicht über Kodierungen nachdenken, es sei denn, das Dokument definiert keine Kodierung und Beautiful Soup kann keine solche erkennen. Dann müssen Sie nur noch die ursprüngliche Kodierung auswählen. Beautiful Soup basiert auf bekannten Python-Parsern wie LXML und HTML und ermöglicht es Ihnen, verschiedene Parsing-Strategien auszuprobieren oder Geschwindigkeit gegen Flexibilität einzutauschen.
pip install beautifulsoup4>
Beispiel
- Bibliotheken importieren: Der Code importiert die Requests-Bibliothek zum Senden von HTTP-Anfragen und die BeautifulSoup-Klasse aus der bs4-Bibliothek zum Parsen von HTML.
- Eine GET-Anfrage stellen: Es sendet eine GET-Anfrage an „https://www.techcodeview.com“.
- Statuscode prüfen: Es gibt den Statuscode der Antwort aus, normalerweise 200 für Erfolg.
- Parsen des HTML : Der HTML-Inhalt der Antwort wird mit BeautifulSoup analysiert und in der Variablen Suppe gespeichert.
- Drucken des verschönerten HTML-Codes: Es druckt die beschönigte Version des analysierten HTML-Inhalts zur besseren Lesbarkeit und Analyse.
import requests from bs4 import BeautifulSoup # Making a GET request r = requests.get('https://www.techcodeview.com) # check status code for response received # success code - 200 print(r) # Parsing the HTML soup = BeautifulSoup(r.content, 'html.parser') print(soup.prettify())> Ausgabe

Elemente nach Klasse suchen
Jetzt möchten wir einige nützliche Daten aus dem HTML-Inhalt extrahieren. Das Suppenobjekt enthält alle Daten in der verschachtelten Struktur, die programmgesteuert extrahiert werden könnten. Die Website, die wir durchsuchen möchten, enthält viel Text. Lassen Sie uns nun den gesamten Inhalt durchsuchen. Schauen wir uns zunächst die Webseite an, die wir durchsuchen möchten.
Im obigen Bild können wir sehen, dass sich der gesamte Inhalt der Seite unter dem div mit der Klasse „entry-content“ befindet. Wir werden die Klasse find verwenden. Diese Klasse findet das angegebene Tag mit dem angegebenen Attribut. In unserem Fall werden alle Div gefunden, die eine Klasse als Eintragsinhalt haben.
Wir können sehen, dass sich der Inhalt der Seite unter dem befindet
Etikett. Jetzt müssen wir alle in dieser Klasse vorhandenen p-Tags finden. Wir können das nutzenfinde alle Klasse der BeautifulSoup.
spitzer WinkelPython
import requests from bs4 import BeautifulSoup # Making a GET request r = requests.get('https://www.techcodeview.com) # Parsing the HTML soup = BeautifulSoup(r.content, 'html.parser') s = soup.find('div', class_='entry-content') content = s.find_all('p') print(content)> Ausgabe:

Weitere Informationen finden Sie in unserem Python BeautifulSoup .
Selen
Selenium ist ein beliebtes Python-Modul zur Automatisierung von Webbrowsern. Es ermöglicht Entwicklern die programmgesteuerte Steuerung von Webbrowsern und ermöglicht so Aufgaben wie Web Scraping, automatisierte Tests und die Interaktion mit Webanwendungen. Selenium unterstützt verschiedene Webbrowser, darunter Chrome, Firefox, Safari und Edge, was es zu einem vielseitigen Tool für die Browserautomatisierung macht.
Beispiel 1: Für Firefox
In diesem konkreten Beispiel leiten wir den Browser mit dem Abfrageparameter geeksforgeeks zur Google-Suchseite. Der Browser lädt diese Seite und wir können dann mit Selenium programmgesteuert mit ihr interagieren. Diese Interaktion kann Aufgaben wie das Extrahieren von Suchergebnissen, das Klicken auf Links oder das Entfernen bestimmter Inhalte von der Seite umfassen.
Python # import webdriver from selenium import webdriver # create webdriver object driver = webdriver.Firefox() # get google.co.in driver.get('https://google.co.in / search?q = geeksforgeeks')> Ausgabe

Beispiel 2: Für Chrome
- Wir importieren das Webdriver-Modul aus der Selenium-Bibliothek.
- Wir geben den Pfad zur ausführbaren Datei des Webtreibers an. Sie müssen den entsprechenden Treiber für Ihren Browser herunterladen und den Pfad dazu angeben. In diesem Beispiel verwenden wir den Chrome-Treiber.
- Wir erstellen mit webdriver.Chrome() eine neue Instanz des Webbrowsers und übergeben den Pfad zur ausführbaren Chrome-Treiberdatei als Argument.
- Wir navigieren zu einer Webseite, indem wir die Methode get() für das Browserobjekt aufrufen und die URL der Webseite übergeben.
- Wir extrahieren Informationen von der Webseite mithilfe verschiedener von Selenium bereitgestellter Methoden. In diesem Beispiel rufen wir den Seitentitel mithilfe des Titelattributs des Browserobjekts ab.
- Abschließend schließen wir den Browser mit der Methode quit().
# importing necessary packages from selenium import webdriver from selenium.webdriver.common.by import By from webdriver_manager.chrome import ChromeDriverManager # for holding the resultant list element_list = [] for page in range(1, 3, 1): page_url = 'https://webscraper.io/test-sites/e-commerce/static/computers/laptops?page=' + str(page) driver = webdriver.Chrome(ChromeDriverManager().install()) driver.get(page_url) title = driver.find_elements(By.CLASS_NAME, 'title') price = driver.find_elements(By.CLASS_NAME, 'price') description = driver.find_elements(By.CLASS_NAME, 'description') rating = driver.find_elements(By.CLASS_NAME, 'ratings') for i in range(len(title)): element_list.append([title[i].text, price[i].text, description[i].text, rating[i].text]) print(element_list) #closing the driver driver.close()>
Ausgabe
Du bist ein Splice

Weitere Informationen finden Sie in unserem Python Selenium .
Lxml
Das lxml-Modul in Python ist eine leistungsstarke Bibliothek zur Verarbeitung von XML- und HTML-Dokumenten. Es bietet leistungsstarke XML- und HTML-Parsing-Funktionen sowie eine einfache und pythonische API. lxml wird aufgrund seiner Geschwindigkeit, Flexibilität und Benutzerfreundlichkeit häufig beim Python-Web-Scraping verwendet.
pip install lxml>
Beispiel
Hier ist ein einfaches Beispiel, das zeigt, wie das lxml-Modul für Python-Web-Scraping verwendet wird:
- Wir importieren das HTML-Modul aus lxml zusammen mit dem Requests-Modul zum Senden von HTTP-Anfragen.
- Wir definieren die URL der Website, die wir scrapen möchten.
- Wir senden mithilfe der Funktion „requests.get()“ eine HTTP-GET-Anfrage an die Website und rufen den HTML-Inhalt der Seite ab.
- Wir analysieren den HTML-Inhalt mit der Funktion html.fromstring() von lxml, die einen HTML-Elementbaum zurückgibt.
- Wir verwenden XPath-Ausdrücke, um bestimmte Elemente aus dem HTML-Baum zu extrahieren. In diesem Fall extrahieren wir den Textinhalt aller (Anker-)Elemente auf der Seite.
- Wir durchlaufen die extrahierten Linktitel und drucken sie aus.
from lxml import html import requests # Define the URL of the website to scrape url = 'https://example.com' # Send an HTTP request to the website and retrieve the HTML content response = requests.get(url) # Parse the HTML content using lxml tree = html.fromstring(response.content) # Extract specific elements from the HTML tree using XPath # For example, let's extract the titles of all the links on the page link_titles = tree.xpath('//a/text()') # Print the extracted link titles for title in link_titles: print(title)> Ausgabe
More information...>
Urllib-Modul
Das urllib-Modul in Python ist eine integrierte Bibliothek, die Funktionen für die Arbeit mit URLs bereitstellt. Es ermöglicht Ihnen, mit Webseiten zu interagieren, indem Sie URLs (Uniform Resource Locators) abrufen, Daten von ihnen öffnen und lesen und andere URL-bezogene Aufgaben wie Kodierung und Analyse ausführen. Urllib ist ein Paket, das mehrere Module für die Arbeit mit URLs sammelt, wie zum Beispiel:
- urllib.request zum Öffnen und Lesen.
- urllib.parse zum Parsen von URLs
- urllib.error für die ausgelösten Ausnahmen
- urllib.robotparser zum Parsen von robot.txt-Dateien
Wenn urllib in Ihrer Umgebung nicht vorhanden ist, führen Sie den folgenden Code aus, um es zu installieren.
pip install urllib3>
Beispiel
Hier ist ein einfaches Beispiel, das zeigt, wie das Modul urllib zum Abrufen des Inhalts einer Webseite verwendet wird:
- Wir definieren die URL der Webseite, die wir abrufen möchten.
- Wir verwenden die Funktion urllib.request.urlopen(), um die URL zu öffnen und ein Antwortobjekt zu erhalten.
- Wir lesen den Inhalt des Antwortobjekts mit der Methode read().
- Da der Inhalt als Bytes zurückgegeben wird, dekodieren wir ihn mit der Methode decode() mit „utf-8“-Kodierung in einen String.
- Zum Schluss drucken wir den HTML-Inhalt der Webseite.
import urllib.request # URL of the web page to fetch url = 'https://www.example.com' try: # Open the URL and read its content response = urllib.request.urlopen(url) # Read the content of the response data = response.read() # Decode the data (if it's in bytes) to a string html_content = data.decode('utf-8') # Print the HTML content of the web page print(html_content) except Exception as e: print('Error fetching URL:', e)> Ausgabe

PyautoGUI
Das pyautogui-Modul in Python ist eine plattformübergreifende GUI-Automatisierungsbibliothek, die es Entwicklern ermöglicht, Maus und Tastatur zu steuern, um Aufgaben zu automatisieren. Obwohl es nicht speziell für Web Scraping entwickelt wurde, kann es in Verbindung mit anderen Web Scraping-Bibliotheken wie Selenium verwendet werden, um mit Webseiten zu interagieren, die Benutzereingaben erfordern oder menschliche Aktionen simulieren.
pip3 install pyautogui>
Beispiel
In diesem Beispiel wird pyautogui verwendet, um einen Bildlauf durchzuführen und einen Screenshot der Suchergebnisseite zu erstellen, die durch Eingabe einer Suchanfrage in das Sucheingabefeld und Klicken auf die Suchschaltfläche mit Selenium erstellt wurde.
Python import pyautogui # moves to (519,1060) in 1 sec pyautogui.moveTo(519, 1060, duration = 1) # simulates a click at the present # mouse position pyautogui.click() # moves to (1717,352) in 1 sec pyautogui.moveTo(1717, 352, duration = 1) # simulates a click at the present # mouse position pyautogui.click()>
Ausgabe

Zeitplan
Das Zeitplanmodul in Python ist eine einfache Bibliothek, mit der Sie Python-Funktionen so planen können, dass sie in bestimmten Intervallen ausgeführt werden. Dies ist beim Web-Scraping in Python besonders nützlich, wenn Sie regelmäßig in vordefinierten Intervallen, z. B. stündlich, täglich oder wöchentlich, Daten von einer Website scrapen müssen.
Beispiel
- Wir importieren die notwendigen Module: Zeitplan, Zeit, Anfragen und BeautifulSoup aus dem bs4-Paket.
- Wir definieren eine Funktion scrape_data(), die die Web-Scraping-Aufgabe ausführt. Innerhalb dieser Funktion senden wir eine GET-Anfrage an eine Website (ersetzen Sie „https://example.com“ durch die URL der Website, die Sie scannen möchten), analysieren den HTML-Inhalt mit BeautifulSoup, extrahieren die gewünschten Daten und drucken ihn aus .
- Wir planen die Funktion scrape_data() so, dass sie jede Stunde ausgeführt wird, indem wir Schedule.every().hour.do(scrape_data) verwenden.
- Wir treten in eine Hauptschleife ein, die mithilfe von Schedule.run_pending() kontinuierlich nach ausstehenden geplanten Aufgaben sucht und zwischen den Iterationen eine Sekunde lang schläft, um zu verhindern, dass die Schleife zu viel CPU verbraucht.
import schedule import time def func(): print('Geeksforgeeks') schedule.every(1).minutes.do(func) while True: schedule.run_pending() time.sleep(1)> Ausgabe
wenn sonst in der Bash-Shell

Warum Python3 für Web Scraping?
Die Beliebtheit von Python beim Web Scraping ist auf mehrere Faktoren zurückzuführen:
- Benutzerfreundlichkeit : Die saubere und lesbare Syntax von Python macht es selbst Anfängern leicht, Code zu verstehen und zu schreiben. Diese Einfachheit beschleunigt den Entwicklungsprozess und reduziert die Lernkurve für Web-Scraping-Aufgaben.
- Reichhaltiges Ökosystem : Python verfügt über ein riesiges Ökosystem an Bibliotheken und Frameworks, die auf Web Scraping zugeschnitten sind. Bibliotheken wie BeautifulSoup, Scrapy und Requests vereinfachen das Parsen von HTML und machen die Datenextraktion zum Kinderspiel.
- Vielseitigkeit : Python ist eine vielseitige Sprache, die für eine Vielzahl von Aufgaben über das Web-Scraping hinaus verwendet werden kann. Dank seiner Flexibilität können Entwickler Web Scraping nahtlos in größere Projekte wie Datenanalyse, maschinelles Lernen oder Webentwicklung integrieren.
- Gemeinschaftliche Unterstützung : Python verfügt über eine große und aktive Community von Entwicklern, die zu seinen Bibliotheken beitragen und durch Foren, Tutorials und Dokumentation Unterstützung bieten. Diese Fülle an Ressourcen stellt sicher, dass Entwickler Zugang zu Unterstützung und Anleitung bei der Bewältigung von Web-Scraping-Herausforderungen haben.