Websites auslesen mit Python

Django, Flask, Bottle, WSGI, CGI…
Antworten
cthaus
User
Beiträge: 4
Registriert: Freitag 20. Dezember 2013, 12:02

Hallo Zusammen,

ich bin gerade dabei Python ein Suchprogramm zum Durchsuchen von einer bestimmten externen Website zu schreiben. Und zwar soll der Suchbegriff um es optisch etwas aufzuhübschen in einer HTML-Seite eingeben werden. Durch betätigen des "Suchen"-Buttons wird der Suchbegriff dann Python übergeben. Die externe Website hat wiederum eine Suchfunktion. In diese Suchfunktion der externen Website soll Python meinen Suchbegriff reinschreiben. Die externe Website liefert dann ein Suchergebnis, die vorher definierten Parameter soll dann Python lesen und auf meiner Website strukturiert ausgeben. Ausgabe In JSON/XML , weil ich Java oder AJAX nutzen möchte.
Hier hackt es aber gewaltig. Nichts funktioniert, nichts greift ineinander.

Bin für jeden Tipp sehr dankbar.

Vielen Dank im Voraus und eine schöne Weihnachtszeit.
Sirius3
User
Beiträge: 17748
Registriert: Sonntag 21. Oktober 2012, 17:20

@cthaus: wenn es an der Ausgabe nach JSON hackt: python hat ein json-Modul in der Standardbibliothek.
cthaus
User
Beiträge: 4
Registriert: Freitag 20. Dezember 2013, 12:02

daran hackt es leider nicht ;-) aber danke. Es hackt eigentlich am Anfang von dem was ich beschrieben habe. Danke
BlackJack

@cthaus: Das ist ein wenig zu allgemein um da eine sinnvolle Antwort zu geben. Was ist das *konkrete* Problem. Was hast Du bereits, und wo kommst Du da nicht weiter?

Ansonsten kann man nur so allgemeine Dinge wie Bottle, Django, Flask, `requests`, und `lxml.html` in den Raum werfen.
cthaus
User
Beiträge: 4
Registriert: Freitag 20. Dezember 2013, 12:02

Das was ich bereits hierzu hatte, scheint wohl nicht zu funktionieren.
Insofern habe ich meine Frage, so abstrakt wie möglich, hier im Forum publiziert um niemandem mit meinem Code bzw. Logikansatz zu verwirren.
Eigentlich wollte ich mit euerer Hilfe und euren Ansätzen komplett neu auf der grünen Wiese starten,...vllt kann es ja jemand konkretisieren und kurz seine Logik aufschreiben.
Nochmals vielen Dank
cthaus
User
Beiträge: 4
Registriert: Freitag 20. Dezember 2013, 12:02

Da ich sehr in Zeitdruck bin (ist nämlich eine Projektarbeit im Studium und die Abgabe soll noch vor Weihnachten sein) und wie es aussieht ich es selbst nicht hinbekomme, bin ich auch bereit euren Aufwand zu entlohnen. Falls hier jemand Interesse hat bitte einfach email an ct at i-tps punkt de schreiben. Danke
Sirius3
User
Beiträge: 17748
Registriert: Sonntag 21. Oktober 2012, 17:20

@cthaus: Wenn es sich hier um Projektarbeit handelt, von welchem Weihnachten sprichst Du?
Wie schon gesagt wurde, die Angaben sind zu allgemein. Was für eine Suche? Was für ein Ausgabeformat? usw.
Am besten stellst Du hier vor, was Du probiert hast, dann können wir Dir auch sagen, wo es Verbesserungspotential gibt.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

cthaus hat geschrieben:Eigentlich wollte ich mit euerer Hilfe und euren Ansätzen komplett neu auf der grünen Wiese starten,...vllt kann es ja jemand konkretisieren und kurz seine Logik aufschreiben.
  1. Ermittle einmalig, wie die fernzusteuernde fremde Seite Daten überträgt (GET/POST)
  2. Verwende ein (Micro-)Webframework
  3. Zeige mit Hilfe des Frameworks deine Suchseite an
  4. Reagiere auf die Suchanfrage deiner Seite und sende an die fremde Seite einen Request (siehe Punkt 1) der dort die Suche auslöst
  5. Lies das Resultat und parse es mit einer geeigneten Bibliothek (z.B. BeautifulSoup)
  6. Zeige die Daten auf deiner Seite an
Sirius3
User
Beiträge: 17748
Registriert: Sonntag 21. Oktober 2012, 17:20

@cthaus: Dein erster Schritt sollte sein, Suchanfragen an die Seite zu stellen und das Ergebnis zu parsen. Als Datenstruktur bietet sich da für den Anfang eine Liste mit Dictionaries an, die können dann auch einfach als JSON geschrieben werden.
Erst wenn das funktioniert, brauchst Du Dir Gedanken über eine Bereitstellung der Funktion in einem Webinterface machen.
Zum Absenden der Anfrage bietet sich das requests-Modul an, zum Parsen des Ergebnisses BeautifulSoup.
schnickalot
User
Beiträge: 22
Registriert: Dienstag 13. August 2019, 14:38

mal ne allgemeine Frage:

hab bisher 3 Seiten mit bs4 geparst, ziemlich problemlos. Nun hab ich aber 2 Seiten, die sich zwischen den Browser-Ansichten "Quellcode" und "Elemente untersuchen" gravierend unterscheiden. Im Quellcode sind kaum noch tags.. eher scripte hinterlegt. Wenn ich die Seiten mit request.session runterlade, kann ich damit natürlich wenig anfangen.

Kann mir einer sagen wie sowas kommt und gibt es Möglichkeiten diese Seiten trotzdem irgendwie zu parsen?
__deets__
User
Beiträge: 14538
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du sagst es ja schon selbst: die definieren Skripte. Und die Skripte laden die Daten nach, und manipulieren die Seite. Es gibt zwei Wege drumrum:
- die Daten kommen immer von einem Server, du kannst versuchen, die Abfragen die dahinter stehen, selbst zu machen. Das wird ggf. aber sehr, sehr kompliziert, wenn da zB mit Nonces oder anderen Techniken gearbeitet wird.
- du benutzt einen Browser mit JS, zB via Selenium, um dein scraping zu treiben.
schnickalot
User
Beiträge: 22
Registriert: Dienstag 13. August 2019, 14:38

cool Danke Dir. Ja, dachte mir natürlich schon das die Scripte "die Seite bauen".. war mir aber nicht sicher. Dann les ich mich mal in Selenium ein.
tim_paterson
User
Beiträge: 15
Registriert: Samstag 2. November 2019, 07:04

schon mal scrapy versucht :D ?
Antworten