Aktuelles
Werbebanner ddlbanner rgbanner

Problem MySQL oder Datenbank

Phantom

Disco-Load-Eisen
Ehrenmitglied
Uploader
Dabei seit
2 Juli 2023
Beiträge
224
Likes
252
Punkte
63
Hallo meine lieben, ich hoffe ich bin im richtigen Bereich gelandet, falls nicht bitte verschieben.

Also ich versuche seit längerer Zeit schon Daten aus einer Webseite abzurufen. diese gehört mir natürlich nicht.
Das problem das ich habe das bei der Auswahl auf der Seite immer nur 100 Ergebnisse angezeigt werden, ich würde aber gerne alle Ergebnisse haben wollen, ca. 44000 Einträge.
Ich weis leider nicht wie diese Daten hinterlegt sind. Ich hoffe das jemand eine zündende Idee hat wie ich das raus bekomme und die Daten einmal abrufen kann um sie mir lokal zu speichern.

Bin für jede Anregung oder Hilfe dankbar. die Seite gibt es nur privat bei entsprechenden antworten.
 
Ich weis, nach deinen angaben, nicht um welche Web-Seite es sich handelt.
Doch im normal fall kann am alles was man sieht oder hört ohne weiteres laden z.B. mit dem FireFox.
Was die Ergebnisse auf der Web-Seite angeht, es kann sein das Allgemein nur 100 Ergebnisse angezeigt werden die zu dem Suchbegriff passen oder zum Thema das du gewählt hast.
Bei 44000 Einträgen kann man nicht alles auf einmal angezeigt bekommen. Es gibt natürlich ausnahmen doch das liegt am Betreiber der Web-Seite wie der das ganze aufgebaut hat.
Was ich mir vorstellen kann ist das man von der Web-Seite eine HTML Kopie macht und vielleicht da durch an alle Ergebnisse kommt. Ansonsten fällt mir so auch nichts weiter dazu ein.
LG
Josi
 
Kommentar
Um Daten von einer Webseite zu extrahieren, insbesondere wenn du eine Limitierung wie 100 Ergebnisse pro Seite hast, gibt es mehrere Ansätze, die du in Betracht ziehen kannst:

1. Pagination oder Infinite Scrolling

Zunächst ist es wichtig herauszufinden, wie die Seite die restlichen Daten lädt. Es gibt zwei gängige Ansätze:

  • Pagination: Viele Webseiten haben eine Paginierung, bei der du durch verschiedene Seiten blättern kannst, indem du z.B. „Nächste Seite“ oder Zahlen am Seitenende anklickst. Du kannst das durch den HTML-Quellcode oder durch den Netzwerkverkehr (siehe Punkt 3) herausfinden. Meistens lassen sich URLs für die weiteren Seiten abändern, indem du den Seitenparameter in der URL manuell änderst (z.B. ?page=2).
  • Infinite Scrolling: Hierbei werden neue Ergebnisse dynamisch geladen, sobald du nach unten scrollst. Das kannst du erkennen, wenn beim Scrollen zusätzliche Ergebnisse erscheinen, ohne dass die Seite neu geladen wird. In diesem Fall werden zusätzliche Daten oft per AJAX-Request nachgeladen.

2. Web Scraping

Du kannst Web Scraping-Tools wie BeautifulSoup oder Selenium (für Python) verwenden, um die Daten zu extrahieren. Wenn die Seite aber eine Limitierung hat, musst du den Paginierungsmechanismus erkennen und entsprechend den Scraper so konfigurieren, dass er alle Seiten durchläuft.

3. Analyse des Netzwerkverkehrs (Browser-Developer-Tools)

Du kannst die Entwicklertools deines Browsers verwenden (Rechtsklick → „Untersuchen“ oder F12). Im Tab Netzwerk kannst du sehen, welche Anfragen beim Laden der Seite gesendet werden. Besonders interessant sind XHR-Anfragen, da sie oft die nachgeladenen Daten enthalten (wenn z.B. Infinite Scrolling verwendet wird).

Suche nach JSON-Daten oder API-Anfragen, die die Einträge in größerer Zahl bereitstellen könnten. Wenn du diese API-Anfragen findest, kannst du versuchen, sie direkt abzurufen, anstatt die gesamte Webseite zu scrapen.

4. API-Endpunkte nutzen

Manchmal gibt es versteckte API-Endpunkte, die alle Daten in einem maschinenlesbaren Format wie JSON bereitstellen. Diese kannst du mit den Entwicklertools oder durch Inspektion des Quellcodes der Webseite identifizieren.

5. Automatisierung über Tools

  • Selenium kann verwendet werden, um automatisiert durch die Seiten zu blättern oder zu scrollen.
  • Puppeteer (für Node.js) bietet ähnliche Funktionen.

6. Rechtliche Aspekte beachten

Stelle sicher, dass das Scrapen der Webseite nicht gegen die Nutzungsbedingungen verstößt, da viele Seiten dies in ihren Robots.txt-Dateien oder Nutzungsbedingungen reglementieren. Bei privaten Seiten oder API-Endpunkten ist es oft notwendig, eine Genehmigung einzuholen.
 
Kommentar
Entschuldigt bitte den Doppelpost.

Ich habe für dich ein Python-Script erstellt, was du nutzen kannst.


Python:
import requests
from bs4 import BeautifulSoup
import csv

# Liste der statischen URLs, die gescrapt werden sollen
urls = [
    "https://deine-URL"
]

# Funktion zum Abrufen einer Seite
def get_page(url):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}
    try:
        response = requests.get(url, headers=headers)
        if response.status_code == 200:
            return response.text
        else:
            print(f"Fehler: {response.status_code} für URL {url}")
            return None
    except Exception as e:
        print(f"Anfrage fehlgeschlagen: {e}")
        return None

# Funktion zum Parsen der Seite und Extrahieren von Inhalten
def parse_page(html):
    soup = BeautifulSoup(html, 'html.parser')

    # Beispiel: Extrahiere den gesamten Textinhalt der Seite
    page_content = soup.get_text(strip=True)

    # Du kannst auch spezifische Elemente anpassen, z.B.:
    # page_content = soup.find('div', class_='specific-class').get_text(strip=True)

    return page_content

# Hauptfunktion, um jede URL zu durchlaufen und Daten zu sammeln
def scrape_website():
    all_results = []
    for url in urls:
        print(f"Scraping URL: {url}")
        html = get_page(url)
        if html:
            content = parse_page(html)
            all_results.append({'url': url, 'content': content})
        else:
            print(f"Keine Daten für URL: {url}")

    return all_results

# Funktion zum Speichern der Daten
def save_to_file(data, filename='output.csv'):
    with open(filename, mode='w', newline='', encoding='utf-8') as file:
        writer = csv.DictWriter(file, fieldnames=["url", "content"])
        writer.writeheader()
        for entry in data:
            writer.writerow(entry)

if __name__ == "__main__":
    try:
        data = scrape_website()
        if data:
            print(f"{len(data)} Seiten gescrapt.")
            save_to_file(data)
            print("Daten erfolgreich gespeichert.")
        else:
            print("Keine Daten gefunden.")
    except Exception as e:
        print(f"Es ist ein Fehler aufgetreten: {e}")
    
    # Warte auf eine Eingabe, um das Fenster offen zu halten
    input("Drücke Enter, um das Fenster zu schließen.")

CSV-Datei:​

Die Daten werden in einer CSV-Datei mit zwei Spalten gespeichert:

  • url: Die URL der Seite.
  • content: Der gesamte Textinhalt der Seite.

Ausführung des Skripts:​

  1. Stelle sicher, dass du die benötigten Bibliotheken installiert hast:
    pip install requests beautifulsoup4
 
Kommentar
Hallöchen mein allerliebster Freund residents,
erstmal vielen herzlichen dank für die tolle Erklärung und deine damit verbundene Mühen.

klingt irgendwie alles sehr kompliziert. Ich schätze das mein kleines Wissen dazu nicht ausreicht. leider.
aber dein Script werde ich testen und Dir natürlich berichten ob dieses zum erfolg geführt hat.

In ewiger Dankbarkeit 💓
Phantom
 
Kommentar

Als Gast hast du leider keine Möglichkeit zu kommentieren oder Inhalte zu posten.

Du musst bei uns Mitglied sein, um einen Kommentar hinterlassen zu können

Account erstellen

Erstelle Dir unverbindlich ein Account in unserer Community. Es ist ganz einfach und sicher!

Zum Login

Du hast bereits ein Account? Logge Dich bitte hier ein.

Zurück
Oben