


Scraping von unendlich scrollbaren Seiten mit der Schaltfl?che ?Mehr laden': Eine Schritt-für-Schritt-Anleitung
Jan 13, 2025 pm 06:09 PMHinken Ihre Scraper beim Versuch, Daten von dynamischen Webseiten zu laden? Sind Sie frustriert über endlose Schriftrollen oder diese l?stigen ?Mehr laden“-Schaltfl?chen?
Du bist nicht allein. Heutzutage implementieren viele Websites diese Designs, um die Benutzererfahrung zu verbessern – für Web-Scraper k?nnen sie jedoch eine Herausforderung darstellen.
Dieses Tutorial führt Sie durch eine anf?ngerfreundliche Anleitung zum Scrapen einer Demoseite mit der Schaltfl?che Mehr laden. So sieht die Zielwebseite aus:
Am Ende erfahren Sie, wie Sie:
- Richten Sie Selenium für Web Scraping ein.
- Automatisieren Sie die Interaktion mit der Schaltfl?che ?Mehr laden“.
- Produktdaten wie Namen, Preise und Links extrahieren.
Lass uns eintauchen!
Schritt 1: Voraussetzungen
Stellen Sie vor dem Eintauchen folgende Voraussetzungen sicher:
- Python installiert: Laden Sie die neueste Python-Version von python.org herunter und installieren Sie sie, einschlie?lich PIP w?hrend der Einrichtung.
- Grundkenntnisse: Vertrautheit mit Web-Scraping-Konzepten, Python-Programmierung und der Arbeit mit Bibliotheken wie Requests, BeautifulSoup und Selenium.
Erforderliche Bibliotheken:
- Anfragen: Zum Senden von HTTP-Anfragen.
- BeautifulSoup: Zum Parsen des HTML-Inhalts.
- Selenium: Zur Simulation von Benutzerinteraktionen wie Schaltfl?chenklicks in einem Browser.
Sie k?nnen diese Bibliotheken mit dem folgenden Befehl in Ihrem Terminal installieren:
pip install requests beautifulsoup4 selenium
Bevor Sie Selenium verwenden, müssen Sie einen zu Ihrem Browser passenden Webtreiber installieren. Für dieses Tutorial verwenden wir Google Chrome und ChromeDriver. Sie k?nnen jedoch ?hnliche Schritte für andere Browser wie Firefox oder Edge ausführen.
Installieren Sie den Web-Treiber
- überprüfen Sie Ihre Browserversion:
?ffnen Sie Google Chrome und navigieren Sie zu Hilfe > über Google Chrome aus dem Dreipunktmenü, um die Chrome-Version zu finden.
ChromeDriver herunterladen:
Besuchen Sie die ChromeDriver-Downloadseite.
Laden Sie die Treiberversion herunter, die zu Ihrer Chrome-Version passt.
ChromeDriver zu Ihrem Systempfad hinzufügen:
Extrahieren Sie die heruntergeladene Datei und legen Sie sie in einem Verzeichnis wie /usr/local/bin (Mac/Linux) oder C:WindowsSystem32 (Windows) ab.
Installation überprüfen
Initialisieren Sie eine Python-Datei scraper.py in Ihrem Projektverzeichnis und testen Sie, ob alles korrekt eingerichtet ist, indem Sie den folgenden Codeausschnitt ausführen:
from selenium import webdriver driver = webdriver.Chrome() # Ensure ChromeDriver is installed and in PATH driver.get("https://www.scrapingcourse.com/button-click") print(driver.title) driver.quit()
Sie k?nnen den obigen Dateicode ausführen, indem Sie den folgenden Befehl auf Ihrem Terminal ausführen:
pip install requests beautifulsoup4 selenium
Wenn der obige Code fehlerfrei l?uft, ?ffnet er eine Browseroberfl?che und ?ffnet die URL der Demoseite wie unten gezeigt:
Selenium extrahiert dann den HTML-Code und druckt den Seitentitel. Sie werden eine Ausgabe wie diese sehen -
from selenium import webdriver driver = webdriver.Chrome() # Ensure ChromeDriver is installed and in PATH driver.get("https://www.scrapingcourse.com/button-click") print(driver.title) driver.quit()
Dadurch wird best?tigt, dass Selenium einsatzbereit ist. Wenn alle Anforderungen installiert und einsatzbereit sind, k?nnen Sie mit dem Zugriff auf den Inhalt der Demoseite beginnen.
Schritt 2: Erhalten Sie Zugriff auf den Inhalt
Der erste Schritt besteht darin, den ursprünglichen Inhalt der Seite abzurufen, wodurch Sie eine grundlegende Momentaufnahme des HTML-Codes der Seite erhalten. Dies hilft Ihnen, die Konnektivit?t zu überprüfen und einen gültigen Ausgangspunkt für den Scraping-Prozess sicherzustellen.
Sie rufen den HTML-Inhalt der Seiten-URL ab, indem Sie eine GET-Anfrage mithilfe der Requests-Bibliothek in Python senden. Hier ist der Code:
python scraper.py
Der obige Code gibt den rohen HTML-Code aus, der die Daten für die ersten 12 Produkte enth?lt.
Diese schnelle Vorschau des HTML stellt sicher, dass die Anfrage erfolgreich war und Sie mit gültigen Daten arbeiten.
Schritt 3: Weitere Produkte laden
Um auf die verbleibenden Produkte zuzugreifen, müssen Sie auf der Seite programmgesteuert auf die Schaltfl?che ?Mehr laden“ klicken, bis keine Produkte mehr verfügbar sind. Da diese Interaktion JavaScript beinhaltet, verwenden Sie Selenium, um den Klick auf die Schaltfl?che zu simulieren.
Bevor wir Code schreiben, überprüfen wir die Seite, um Folgendes zu finden:
- Die ?Mehr laden“-Schaltfl?chenauswahl (load-more-btn).
- Das Div, das die Produktdetails enth?lt (Produktelement).
Sie erhalten alle Produkte, indem Sie weitere Produkte laden. Dadurch erhalten Sie einen gr??eren Datensatz, indem Sie den folgenden Code ausführen:
Load More Button Challenge to Learn Web Scraping - ScrapingCourse.com
Dieser Code ?ffnet den Browser, navigiert zur Seite und interagiert mit der Schaltfl?che ?Mehr laden“. Anschlie?end wird der aktualisierte HTML-Code extrahiert, der nun mehr Produktdaten enth?lt.
Wenn Sie nicht m?chten, dass Selenium den Browser jedes Mal ?ffnet, wenn Sie diesen Code ausführen, bietet es auch Headless-Browser-Funktionen. Ein Headless-Browser verfügt über alle Funktionen eines echten Webbrowsers, jedoch über keine grafische Benutzeroberfl?che (GUI).
Sie k?nnen den Headless-Modus für Chrome in Selenium aktivieren, indem Sie ein ChromeOptions-Objekt definieren und es wie folgt an den WebDriver Chrome-Konstruktor übergeben:
import requests # URL of the demo page with products url = "https://www.scrapingcourse.com/button-click" # Send a GET request to the URL response = requests.get(url) # Check if the request was successful if response.status_code == 200: html_content = response.text print(html_content) # Optional: Preview the HTML else: print(f"Failed to retrieve content: {response.status_code}")
Wenn Sie den obigen Code ausführen, startet Selenium eine Headless-Chrome-Instanz, sodass Sie kein Chrome-Fenster mehr sehen. Dies ist ideal für Produktionsumgebungen, in denen Sie keine Ressourcen auf der GUI verschwenden m?chten, wenn Sie das Scraping-Skript auf einem Server ausführen.
Da nun der vollst?ndige HTML-Inhalt abgerufen ist, ist es an der Zeit, spezifische Details zu jedem Produkt zu extrahieren.
Schritt 4: Produktinformationen analysieren
In diesem Schritt verwenden Sie BeautifulSoup, um den HTML-Code zu analysieren und Produktelemente zu identifizieren. Anschlie?end extrahieren Sie wichtige Details für jedes Produkt, wie Name, Preis und Links.
pip install requests beautifulsoup4 selenium
In der Ausgabe sollten Sie eine strukturierte Liste mit Produktdetails sehen, einschlie?lich Name, Bild-URL, Preis und Link zur Produktseite, etwa so -
from selenium import webdriver driver = webdriver.Chrome() # Ensure ChromeDriver is installed and in PATH driver.get("https://www.scrapingcourse.com/button-click") print(driver.title) driver.quit()
Der obige Code organisiert die rohen HTML-Daten in einem strukturierten Format, was die Arbeit mit den Ausgabedaten erleichtert und sie für die weitere Verarbeitung vorbereitet.
Schritt 5: Produktinformationen in CSV exportieren
Sie k?nnen die extrahierten Daten jetzt in einer CSV-Datei organisieren, was die Analyse oder Weitergabe erleichtert. Dabei hilft das CSV-Modul von Python.
python scraper.py
Der obige Code erstellt eine neue CSV-Datei mit allen erforderlichen Produktdetails.
Hier ist der vollst?ndige Code für eine übersicht:
Load More Button Challenge to Learn Web Scraping - ScrapingCourse.com
Der obige Code erstellt eine products.csv-Datei, die so aussehen würde:
import requests # URL of the demo page with products url = "https://www.scrapingcourse.com/button-click" # Send a GET request to the URL response = requests.get(url) # Check if the request was successful if response.status_code == 200: html_content = response.text print(html_content) # Optional: Preview the HTML else: print(f"Failed to retrieve content: {response.status_code}")
Schritt 6: Erhalten Sie zus?tzliche Daten für Top-Produkte
Angenommen, Sie m?chten die fünf teuersten Produkte identifizieren und zus?tzliche Daten (z. B. Produktbeschreibung und SKU-Code) aus ihren einzelnen Seiten extrahieren. Sie k?nnen dies mit dem Code wie folgt tun:
from selenium import webdriver from selenium.webdriver.common.by import By import time # Set up the WebDriver (make sure you have the appropriate driver installed, e.g., ChromeDriver) driver = webdriver.Chrome() # Open the page driver.get("https://www.scrapingcourse.com/button-click") # Loop to click the "Load More" button until there are no more products while True: try: # Find the "Load more" button by its ID and click it load_more_button = driver.find_element(By.ID, "load-more-btn") load_more_button.click() # Wait for the content to load (adjust time as necessary) time.sleep(2) except Exception as e: # If no "Load More" button is found (end of products), break out of the loop print("No more products to load.") break # Get the updated page content after all products are loaded html_content = driver.page_source # Close the browser window driver.quit()
Hier ist der vollst?ndige Code für eine übersicht:
from selenium import webdriver from selenium.webdriver.common.by import By import time # instantiate a Chrome options object options = webdriver.ChromeOptions() # set the options to use Chrome in headless mode options.add_argument("--headless=new") # initialize an instance of the Chrome driver (browser) in headless mode driver = webdriver.Chrome(options=options) ...
Dieser Code sortiert die Produkte nach Preis in absteigender Reihenfolge. Dann ?ffnet das Skript für die fünf teuersten Produkte deren Produktseiten und extrahiert die Produktbeschreibung und SKU mit BeautifulSoup.
Die Ausgabe des obigen Codes sieht folgenderma?en aus:
from bs4 import BeautifulSoup # Parse the page content with BeautifulSoup soup = BeautifulSoup(html_content, 'html.parser') # Extract product details products = [] # Find all product items in the grid product_items = soup.find_all('div', class_='product-item') for product in product_items: # Extract the product name name = product.find('span', class_='product-name').get_text(strip=True) # Extract the product price price = product.find('span', class_='product-price').get_text(strip=True) # Extract the product link link = product.find('a')['href'] # Extract the image URL image_url = product.find('img')['src'] # Create a dictionary with the product details products.append({ 'name': name, 'price': price, 'link': link, 'image_url': image_url }) # Print the extracted product details for product in products[:2]: print(f"Name: {product['name']}") print(f"Price: {product['price']}") print(f"Link: {product['link']}") print(f"Image URL: {product['image_url']}") print('-' * 30)
Der obige Code aktualisiert die Datei ?products.csv“ und enth?lt nun Informationen wie diese:
Name: Chaz Kangeroo Hoodie Price: Link: https://scrapingcourse.com/ecommerce/product/chaz-kangeroo-hoodie Image URL: https://scrapingcourse.com/ecommerce/wp-content/uploads/2024/03/mh01-gray_main.jpg ------------------------------ Name: Teton Pullover Hoodie Price: Link: https://scrapingcourse.com/ecommerce/product/teton-pullover-hoodie Image URL: https://scrapingcourse.com/ecommerce/wp-content/uploads/2024/03/mh02-black_main.jpg ------------------------------ …
Abschluss
Das Scrapen von Seiten mit unendlichem Scrollen oder ?Mehr laden“-Schaltfl?chen kann schwierig erscheinen, aber die Verwendung von Tools wie Requests, Selenium und BeautifulSoup vereinfacht den Prozess.
In diesem Tutorial wurde gezeigt, wie Produktdaten von einer Demoseite abgerufen und verarbeitet und in einem strukturierten Format für einen schnellen und einfachen Zugriff gespeichert werden.
Alle Codeausschnitte finden Sie hier.
Das obige ist der detaillierte Inhalt vonScraping von unendlich scrollbaren Seiten mit der Schaltfl?che ?Mehr laden': Eine Schritt-für-Schritt-Anleitung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Der Polymorphismus ist ein Kernkonzept in der objektorientierten Programmierung von Python-Objekte und bezieht sich auf "eine Schnittstelle, mehrere Implementierungen" und erm?glicht eine einheitliche Verarbeitung verschiedener Arten von Objekten. 1. Polymorphismus wird durch Umschreiben durch Methode implementiert. Unterklassen k?nnen übergeordnete Klassenmethoden neu definieren. Zum Beispiel hat die Spoke () -Methode der Tierklasse unterschiedliche Implementierungen in Hunde- und Katzenunterklassen. 2. Die praktischen Verwendungen des Polymorphismus umfassen die Vereinfachung der Codestruktur und die Verbesserung der Skalierbarkeit, z. 3. Die Python -Implementierungspolymorphismus muss erfüllen: Die übergeordnete Klasse definiert eine Methode, und die untergeordnete Klasse überschreibt die Methode, erfordert jedoch keine Vererbung derselben übergeordneten Klasse. Solange das Objekt dieselbe Methode implementiert, wird dies als "Ententyp" bezeichnet. 4. Zu beachten ist die Wartung

Iteratoren sind Objekte, die __iter __ () und __next __ () Methoden implementieren. Der Generator ist eine vereinfachte Version von Iteratoren, die diese Methoden automatisch über das Keyword für Rendite implementiert. 1. Der Iterator gibt jedes Mal, wenn er als n?chstes anruft, ein Element zurück und wirft eine Ausnahme in der Stopperation aus, wenn es keine Elemente mehr gibt. 2. Der Generator verwendet Funktionsdefinition, um Daten auf Bedarf zu generieren, Speicher zu speichern und unendliche Sequenzen zu unterstützen. 3. Verwenden Sie Iteratoren, wenn Sie vorhandene S?tze verarbeiten, und verwenden Sie einen Generator, wenn Sie dynamisch Big Data oder faule Bewertung generieren, z. B. das Laden von Zeilen nach Zeile beim Lesen gro?er Dateien. Hinweis: Iterbare Objekte wie Listen sind keine Iteratoren. Sie müssen nach dem Erreichen des Iterators nach seinem Ende nachgebaut werden, und der Generator kann ihn nur einmal durchqueren.

Der Schlüssel zum Umgang mit der API -Authentifizierung besteht darin, die Authentifizierungsmethode korrekt zu verstehen und zu verwenden. 1. Apikey ist die einfachste Authentifizierungsmethode, die normalerweise in den Anforderungsheader- oder URL -Parametern platziert ist. 2. BasicAuth verwendet Benutzername und Kennwort für die Basis64 -Codierungsübertragung, die für interne Systeme geeignet ist. 3.. OAuth2 muss das Token zuerst über Client_id und Client_secret erhalten und dann das BearerToken in den Anforderungsheader bringen. V. Kurz gesagt, die Auswahl der entsprechenden Methode gem?? dem Dokument und das sichere Speichern der Schlüsselinformationen ist der Schlüssel.

Eine gemeinsame Methode, um zwei Listen gleichzeitig in Python zu durchqueren, besteht darin, die Funktion ZIP () zu verwenden, die mehrere Listen in der Reihenfolge und die kürzeste ist. Wenn die Listenl?nge inkonsistent ist, k?nnen Sie iTertools.zip_longest () verwenden, um die l?ngste zu sein und die fehlenden Werte auszufüllen. In Kombination mit Enumerate () k?nnen Sie den Index gleichzeitig erhalten. 1.zip () ist pr?gnant und praktisch, geeignet für die Iteration gepaarte Daten; 2.zip_longest () kann den Standardwert beim Umgang mit inkonsistenten L?ngen einfüllen. 3.Enumerate (ZIP ()) kann w?hrend des Durchlaufens Indizes erhalten und die Bedürfnisse einer Vielzahl komplexer Szenarien erfüllen.

TypHintsinpythonsolvetheProblemofAmbiguityAndpotentialbugsindynamicalpedCodeByAllowingDevelopstospecifyexpectypes

INPYTHON, ITERATORATORSAROBJECTSHATALWOULOUPING ThroughCollections Byimplementing__iter __ () und __Next __ (). 1) IteratorsworkviATheiterProtocol, verwendete __iter __ () toreturn thiteratorand__Next __ () torethentexteemtemuntemuntilstoperationSaised.2) und

Assert ist ein Inssertion -Tool, das in Python zum Debuggen verwendet wird, und wirft einen Assertionerror aus, wenn der Zustand nicht erfüllt ist. Die Syntax ist eine geltende Bedingung sowie optionale Fehlerinformationen, die für die interne Logiküberprüfung geeignet sind, z. B. Parameterprüfung, Statusbest?tigung usw., k?nnen jedoch nicht für die Sicherheits- oder Benutzereingabeprüfung verwendet werden und sollten in Verbindung mit klaren Eingabeaufforderungen verwendet werden. Es ist nur zum Hilfsdebuggen in der Entwicklungsphase verfügbar, anstatt die Ausnahmebehandlung zu ersetzen.

Um moderne und effiziente APIs mit Python zu schaffen, wird Fastapi empfohlen. Es basiert auf Eingabeaufforderungen an Standardpython -Typ und kann automatisch Dokumente mit ausgezeichneter Leistung generieren. Nach der Installation von Fastapi und ASGI Server Uvicorn k?nnen Sie Schnittstellencode schreiben. Durch das Definieren von Routen, das Schreiben von Verarbeitungsfunktionen und die Rückgabe von Daten kann schnell APIs erstellt werden. Fastapi unterstützt eine Vielzahl von HTTP -Methoden und bietet automatisch generierte Swaggerui- und Redoc -Dokumentationssysteme. URL -Parameter k?nnen durch Pfaddefinition erfasst werden, w?hrend Abfrageparameter durch Einstellen von Standardwerten für Funktionsparameter implementiert werden k?nnen. Der rationale Einsatz pydantischer Modelle kann dazu beitragen, die Entwicklungseffizienz und Genauigkeit zu verbessern.
