Heim > Backend-Entwicklung > Python-Tutorial > Web Scraping vereinfacht: Artikeltitel mit BeautifulSoup extrahieren

Web Scraping vereinfacht: Artikeltitel mit BeautifulSoup extrahieren

DDD
Freigeben: 2024-12-20 13:23:09
Original
291 Leute haben es durchsucht

Web Scraping Simplified: Extracting Article Titles with BeautifulSoup

Web Scraping vereinfacht: Artikeltitel mit BeautifulSoup extrahieren

Einführung

Web Scraping ist eine wesentliche Fähigkeit für Entwickler, die effizient Daten aus dem Web sammeln müssen. In diesem Tutorial führen wir ein einfaches Python-Skript durch, um mithilfe von BeautifulSoup, einer leistungsstarken Bibliothek zum Parsen von HTML und XML, Artikeltitel von einer Nachrichten-Website zu extrahieren.

Am Ende dieses Tutorials verfügen Sie über ein Skript, das in nur wenigen Codezeilen Artikeltitel aus einer Webseite extrahiert und anzeigt!


Voraussetzungen

Bevor Sie in den Code eintauchen, stellen Sie sicher, dass Python auf Ihrem System installiert ist. Sie benötigen außerdem die folgenden Bibliotheken:

  1. Anfragen: Um HTTP-Anfragen zu stellen und Webseiteninhalte abzurufen.
  2. BeautifulSoup (bs4): Zum Analysieren und Extrahieren von Daten aus HTML.

Sie können diese Bibliotheken mit pip:
installieren

pip install requests beautifulsoup4
Nach dem Login kopieren

 Das Problem

Angenommen, Sie möchten über die neuesten Nachrichten einer Website wie BBC News auf dem Laufenden bleiben. Anstatt die Website manuell zu besuchen, können Sie diese Aufgabe mit Python automatisieren und die Titel der Artikel zur Analyse oder Anzeige durchsuchen.


Der Kodex

Hier ist das vollständige Python-Skript zum Scrapen von Artikeltiteln:

import requests
from bs4 import BeautifulSoup

def fetch_article_titles(url):
    try:
        # Step 1: Send an HTTP GET request to fetch the webpage
        response = requests.get(url)
        response.raise_for_status()  # Ensure the request was successful

        # Step 2: Parse the webpage content with BeautifulSoup
        soup = BeautifulSoup(response.text, "html.parser")

        # Step 3: Use a CSS selector to find all article titles
        titles = []
        for heading in soup.select("h3"):  # Most news sites use <h3> tags for article titles
            titles.append(heading.get_text(strip=True))  # Extract and clean the text

        return titles
    except requests.exceptions.RequestException as e:
        print(f"Error fetching the webpage: {e}")
        return []
    except Exception as e:
        print(f"Error during parsing: {e}")
        return []

# Example usage: Fetching titles from BBC News
url = "https://www.bbc.com/news"
titles = fetch_article_titles(url)

# Print the article titles
print("Latest Article Titles:")
for i, title in enumerate(titles, 1):
    print(f"{i}. {title}")

Nach dem Login kopieren

Wie es funktioniert

  1. Stellen Sie die Anfrage:

    • Wir verwenden die Methode „requests.get“, um den Inhalt der Zielwebseite abzurufen.
    • Die Methode raise_for_status stellt sicher, dass alle HTTP-Fehler (wie 404 oder 500) frühzeitig erkannt werden.
  2. Inhalt analysieren:

    • Die BeautifulSoup-Bibliothek analysiert den HTML-Inhalt und erleichtert so die Navigation und das Extrahieren von Elementen mithilfe von CSS-Selektoren.
  3. Titel extrahieren:

    • Die Methode „soup.select“ ruft alle

      Elemente, die üblicherweise Artikeltitel auf Nachrichtenseiten enthalten.

    • Die get_text-Methode extrahiert sauberen Text aus jedem Element.

Beispielausgabe

Wenn Sie das Skript ausführen, erhalten Sie eine saubere Liste der Artikeltitel:

Latest Article Titles:
1. Israel-Gaza conflict: Latest updates
2. Global markets fall amid economic uncertainty
3. AI advancements raise ethical questions
4. Football: Premier League results
...
Nach dem Login kopieren

Anpassen des Skripts

Sie können dieses Skript ändern, um andere Arten von Inhalten zu extrahieren oder auf andere Websites abzuzielen. Hier sind ein paar Optimierungen, die Sie ausprobieren können:

  • CSS-Auswahl ändern:
    Ersetzen Sie „h3“ durch einen spezifischeren Selektor (z. B. „div.article-title“), wenn die Zielwebsite eine andere Struktur hat.

  • Zusätzliche Daten scannen:
    Extrahieren Sie URLs, Veröffentlichungsdaten oder Zusammenfassungen, indem Sie die relevanten HTML-Elemente und -Attribute auswählen.


Tipps für ethisches Scraping

  1. Respektieren Sie die Nutzungsbedingungen der Website:
    Überprüfen Sie immer die robots.txt-Datei oder Nutzungsbedingungen einer Website, um sicherzustellen, dass Scraping zulässig ist.

  2. Preisbeschränkung für Ihre Anfragen:
    Vermeiden Sie eine Überlastung des Servers, indem Sie mit der Methode time.sleep eine Verzögerung zwischen Anfragen hinzufügen.

  3. Gehen Sie ordnungsgemäß mit Änderungen um:
    Websites können ihre Struktur ändern und Ihr Skript beschädigen. Seien Sie immer darauf vorbereitet, Ihren Code zu debuggen und zu aktualisieren.


Abschluss

In nur wenigen Zeilen Python-Code haben wir ein einfaches, aber leistungsstarkes Skript erstellt, um Artikeltitel von einer Nachrichten-Website zu entfernen. BeautifulSoup erleichtert die Navigation und das Extrahieren der benötigten Daten, während Anfragen die HTTP-Interaktionen verarbeiten.

Web Scraping kann eine Fülle von Möglichkeiten eröffnen, von der Überwachung von Trends bis hin zur Automatisierung der Datenerfassung. Denken Sie daran, verantwortungsbewusst zu kratzen!

Das obige ist der detaillierte Inhalt vonWeb Scraping vereinfacht: Artikeltitel mit BeautifulSoup extrahieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage