Menu

<< | Zurück

BeautifulSoup

BeautifulSoup ist ein Python-Bibliotheksmodul (Freie Programmbibliothek für Screen Scraping) zur Analyse von HTML- und XML-Dokumenten. Es wird häufig verwendet, um Informationen aus solchen Dokumenten extrahieren (Scraping) zu können. Dazu wird eine sogenannte Parser-Tree erstellt, das die einzelnen Elemente des Documents als Nodestruktur darstellt. BeautifulSoup dient also als Werkzeug zur Parsing und Analyse von HTML- und XML-Dokumenten, um Informationen daraus extrahieren zu können.

BeautifulSoup installieren

@sudo apt-get install python3-bs4
@sudo apt-get install python3-lxml
@sudo apt-get install python3-html5lib

BeautifulSoup Script Beispiele

Datei Beispielscript.py erstellen und Inhalt einfügen und speichern. Scrip wird dann folgendermasen ausgeführt, in meinen Beispiel habe ich python3 auf mein System installiert:
@python3 Beispielscript.py

 

Alle Webseiten werden ausgelesen inkl. Inhalte und im Terminal angezeigt

import requests
from bs4 import BeautifulSoup
import time

def get_current_date():
    return time.strftime("%A, %B %d, %Y", time.localtime())

def get_current_time():
    return f"The current time is {time.strftime('%H:%M %p', time.localtime())}"

def scrape_website(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # Extract all text content from the website
    text_content = " ".join([item.text for item in soup.find_all()])
    
    print("Extracted Text Content:\n", text_content)

if __name__ == "__main__":
    start_date = get_current_date()
    start_time = get_current_time()
    
    print("Tool 'gettimedate/get_current_date' Output:\n", start_date)
    print("Tool 'gettimedate/get_current_time' Output:\n", start_time)
    
    # Specify the website URL to scrape
    url = "https://www.beispielwebseite.com"
    scrape_website(url)

Alle Webseiten werden ausgelesen inkl. Inhalte, im Terminal angezeigt und in Textdatei gespeichert.

import requests
from bs4 import BeautifulSoup
import time

def get_current_date():
    return time.strftime("%A, %B %d, %Y", time.localtime())

def get_current_time():
    return f"The current time is {time.strftime('%H:%M %p', time.localtime())}"

def scrape_website(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # Extract all text content from the website
    text_content = " ".join([item.text for item in soup.find_all()])
    
    print("Extracted Text Content:\n", text_content)
    
    with open("www.beispielwebseite.com.txt", "w") as file:
        file.write(text_content)

if __name__ == "__main__":
    start_date = get_current_date()
    start_time = get_current_time()
    
    print("Tool 'gettimedate/get_current_date' Output:\n", start_date)
    print("Tool 'gettimedate/get_current_time' Output:\n", start_time)
    
    # Specify the website URL to scrape
    url = "https://www.beispielwebseite.com"
    scrape_website(url)

Alle Webseite und Inhalte auslesen und in Textdatei speichern

import requests
from bs4 import BeautifulSoup
import time

def get_current_date():
    return time.strftime("%A, %B %d, %Y", time.localtime())

def get_current_time():
    return f"The current time is {time.strftime('%H:%M %p', time.localtime())}"

def scrape_website(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # Extract all text content from the website
    text_content = " ".join([item.text for item in soup.find_all()])
    
    with open("www.beispielwebseite.com.txt", "w") as file:
        file.write(text_content)

if __name__ == "__main__":
    start_date = get_current_date()
    start_time = get_current_time()
    
    print("Tool 'gettimedate/get_current_date' Output:\n", start_date)
    print("Tool 'gettimedate/get_current_time' Output:\n", start_time)
    
    # Specify the website URL to scrape
    url = "https://www.beispielwebseite.com"
    scrape_website(url)

Alle Webseiten und ausführlich Inhalte und im Terminal anzeigen. Wenn Sie nicht wollen im Terminal anzeigen zu lassen sondern nur in Datei schreiben dann setzen Sie # vor print(.. also so #print(..

import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin

# Ersetzen Sie dies durch die URL der Webseite, die Sie scrapen möchten
url = 'https://www.beispielwebseite.com'

# Erstellen Sie eine Anfrage an die Webseite
response = requests.get(url)

# Stellen Sie sicher, dass die Anfrage erfolgreich war
if response.status_code == 200:
    # Erzeugen Sie ein BeautifulSoup-Objekt
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # Drucken Sie die URL der Hauptseite
    print(f"URL der Hauptseite: {url}")

    # Finden Sie alle Links auf der Hauptseite
    for link in soup.find_all('a', href=True):
        # Erstellen Sie eine vollständige URL für jeden Link
        complete_url = urljoin(url, link['href'])
        
        # Erstellen Sie eine Anfrage an jede Seite
        response = requests.get(complete_url)

        # Stellen Sie sicher, dass die Anfrage erfolgreich war
        if response.status_code == 200:
            # Erzeugen Sie ein BeautifulSoup-Objekt für die Seite
            soup_page = BeautifulSoup(response.text, 'html.parser')
            
            # Drucken Sie die URL der Seite
            print(f"URL der Seite: {complete_url}")

            # Drucken Sie das gesamte HTML-Inhalt der Seite
            print(soup_page.prettify())

            with open('output.txt', 'a', encoding='utf-8') as file:
                file.write(f"URL: {complete_url}\n")
                file.write(soup_page.prettify() + "\n\n")

        else:
            print(f"Fehler bei der Anfrage der Seite: {response.status_code}")
else:
    print(f"Fehler bei der Anfrage der Hauptseite: {response.status_code}")