Quellcode und Links aus dem Chrome Browser auslesen

  • Hallo,

    Ich habe im Chrome-Browser eine Internetseite geladen, dessen Quellcode ich gerne auslesen würde. Welche Möglichkeiten habe ich dafür?

    Als nächstes würde ich gerne die Links auf der Seite sind auslesen, die ich mit der Tab-Taste im Browser ausgewählt habe. Welche Möglichkeiten habe ich hierfür?

    Gruß

  • Es gibt eine WebDriver-UDF mit der Firefox, Chrome und Edge "ferngesteuert" werden können - funktioniert.


    WebDriver Support I

    WebDriver Support II

    AutoIt
    ; Beispiel
    _WD_Navigate($sSession, $sURL)
    _WD_LoadWait($sSession)
    $sResult = _WD_GetSource($sSession) ; Source => $sResult

    Mein erstes Programm bestand aus ca. 2.000 Lochkarten und nachdem sie mir das erste mal runtergefallen sind, habe ich die letzten beiden der 80 Byte für eine Numerierung benutzt :rofl:

  • Hallo...

    Ich bekomme den Driver irgendwie nicht zum laufen...

    Also ich habe jetzt die "Source code (zip)" Datei heruntergeladen und entpackt....

    Auch die "Source code (tar.gz)" habe ich heruntergeladen....

    Was muss ich jetzt damit machen?

  • Deine Angaben sind etwas knapp. Hast Du die komplette erforderliche Umgebung runtergeladen? Hier findest Du die Voraussetzungen


    Das müsste dann so aussehen:

    Wenn Du alles zusammen hast, schau Dir mal die wd_demo an, da hat Dan sehr viele Beispiele untergebracht. Bei meinen ersten Versuchen habe ich die Demo einfach ein wenig verändert.


    Wenn alles läuft, kannst Du den kompletten Sourcecode der aktuellen Seite mit $sResult = _WD_GetSource($sSession) in der Textvariablen $sResult finden und untersuchen.


    Mit den vorhandenen Funktionen zusammen mit vorher ermittelten XPath(en) kannst Du dann u.A. Buttons anklicken, Felder ausfüllen und auslesen.


    Schönes Wochenende

    Hans Jürgen

  • Hallo,

    bei mir sieht das jetzt so aus.... ich habe nicht alles gefunden, was auf dem Beispielbild drauf war...


    Gibt es da keine Schritt für Schritt Anleitung oder eine Erklärung, wofür diese Dateien gebraucht werden, die Zusammenhänge, damit da auch ein Verständnis für wachsen kann?

    Ich stochere hier bisschen im dunkeln herum und merke vermutlich nicht mal, wenn ich was getroffen habe...

    Gruß

  • Die Zusammenhänge willst (und brauchst) Du nicht verstehen, zumindest nicht am Anfang ... :ironie:

    Zuerst solltest Du mal die Anzeige der Dateiendungen einschalten, damit man sieht, was Du hast und was fehlt.


    Die Links sind teilweise etwas kompliziert zu orten, aber von Dan's Startseite ausgehend ist alles zu finden. Jason ist hier versteckt https://www.autoitscript.com/f…-non-strict-json-udf-jsmn



    Beim Webdriver musst Du die passende Version zur Version Deines Browsers laden, da gibt es bei Chrome und Edge eine ganze Menge. Firefox ist da anspruchsloser.


    Wenn dann Dein Verzeichnis so aussieht wie bei mir und natürlich AutoIt und SciTEE installiert sind, dann starte wd_demo.


    Hier gibt es weitere Infos: https://www.autoitscript.com/wiki/WebDriver#FAQ


    Ansonsten einfach mal durch die beiden Supportseiten Dan blättern, damit bin ich auch so langsam nach und nach ins Thema gekommen.

    https://www.autoitscript.com/f…-udf-help-support/page/1/

    https://www.autoitscript.com/f…iver-udf-help-support-ii/


    Das Projekt ist (noch) nicht so gut dokumentiert wie AutoIt und andere Projekte, aber ich habe große Hochachtung vor Dan, der das alles zusammengetragen hat und auch aktualisiert.


    Wenn Du mir genauere Infos gibst, was Du machen willst, kann ich Dir vielleicht ein paar Zeilen zusammenstellen.

    Mein erstes Programm bestand aus ca. 2.000 Lochkarten und nachdem sie mir das erste mal runtergefallen sind, habe ich die letzten beiden der 80 Byte für eine Numerierung benutzt :rofl:

  • Bitnugger

    Hat den Titel des Themas von „Quellconde und Links aus dem Chrome Browser auslesen“ zu „Quellcode und Links aus dem Chrome Browser auslesen“ geändert.
  • Beim Webdriver musst Du die passende Version zur Version Deines Browsers laden, da gibt es bei Chrome und Edge eine ganze Menge. Firefox ist da anspruchsloser.

    8| Das würde bedeuten, dass Chrome ein Update raus bringt und alles funktioniert nicht mehr? 8|

    und man hat wieder stundenlange Arbeit, bis alles wieder lauft, muss seinen eigenen Code zusätzlich noch umschreiben... und wieder ewig die aktuellen Dateien im Internet suchen?? Das hört sich ja nicht sehr motivierend an....

    Gibt es da keine zuverlässigere Möglichkeit?

    Schlussendlich möchte ich mich auf einer Seite Quell-Code und Links auslesen, Buttons klicken und durch die Seiten navigieren.... Ich dache ich mache das mit Chrome, weil ich da jetzt viel mit Sendkey ausprobiert habe und das mit Chrome am besten funktioniert hat... Sendkey ist natürlich trotzdem fehleranfällig und das vor allem beim Klicken von Buttons... :(
    Gibt es dafür eine gute Lösung? Was mir beim WebDriver-UDF nicht so gefällt ist, dass man Dateien runterladen und die dann offensichtlich auf dem neusten Stand halten muss damit es funktioniert.

    Das bedeutet sicherlich, dass ich diese Dateien auf allen Rechnern, auf denen ich meinen Code laufen lassen will, aktuell halten muss oder werden diese Dateien nicht mehr benötigt, wenn ich eine .exe erstellt habe?

    Gruß und vielen Dank für deine Hilfe... :)


    Meine Dateien-Sammlung sieht jetzt so aus, es macht Fortschritte aber ich glaube es fehlt mir noch was.... ich weiß auch nicht, ob ich bei allem die richtige Version habe... :(

  • 8| Das würde bedeuten, dass Chrome ein Update raus bringt und alles funktioniert nicht mehr? 8|

    und man hat wieder stundenlange Arbeit, bis alles wieder lauft, muss seinen eigenen Code zusätzlich noch umschreiben... und wieder ewig die aktuellen Dateien im Internet suchen?? Das hört sich ja nicht sehr motivierend an....

    Hört sich schlimmer an als es ist. Die Entwickler vom Webdriver (also die vom Chromedriver, Geckodriver,.. - nicht die von der Webdriver-UDF) scheinen mir ein etwas eigenwilliges Volk zu sein, die aus meiner (unmaßgeblichen) Sicht unmotiviert immer mal wieder Veränderungen einführen ohne Abwärtskompatibilität. Allerdings scheint sich Microsoft zusammen mit Edge Chromium da einzuklinken, vielleicht wird es dann etwas stringenter.

    Das bedeutet sicherlich, dass ich diese Dateien auf allen Rechnern, auf denen ich meinen Code laufen lassen will, aktuell halten muss oder werden diese Dateien nicht mehr benötigt, wenn ich eine .exe erstellt habe?

    Nein, Du musst maximal den Chromedriver aktualisieren, wenn sich die ersten beiden Stellen der Versionsnummer von Chrome ändern (aktuell 83) und Du Chrome updatest. Bei den restlichen Dateien gibt es nur Verbesserungen und Korrekturen - wenn Dein Programm einmal läuft, egal ob kompiliert als .exe oder in SciTE , dann sollte es laufen - damit hatte ich bisher keine Probleme. Ich habe den Chromedriver auf einem Netzwerklaufwerk, ist dann nur eine einzige Kopie.


    Schlussendlich möchte ich mich auf einer Seite Quell-Code und Links auslesen, Buttons klicken und durch die Seiten navigieren.... Ich dache ich mache das mit Chrome, weil ich da jetzt viel mit Sendkey ausprobiert habe und das mit Chrome am besten funktioniert hat... Sendkey ist natürlich trotzdem fehleranfällig und das vor allem beim Klicken von Buttons...

    SendKey ist in dem Zusammenhang übrigens immer nur eine Notlösung, wd_core bietet wesentlich bessere Funktionen dazu. Wenn der Anwender gerade mal kurz mit der Maus irgendwohin klickt, dann geht Dein SendKey irgendwohin, aber nicht dahin, wohin es soll. Mit wd_core kannst Du über den XPath genau bestimmen was wohin geschrieben oder wo geklickt wird (selbst wenn der Anwender zwischendurch auf eine andere Seite geht oder die Seite minimiert). Vor drei Monaten wusste ich auch noch nicht, was genau ein XPath ist und speziell, wie man ihn findet. Falls Dir das nichts sagt - ist nicht so schwer, wenn man es erklärt bekommt ;)

    Meine Dateien-Sammlung sieht jetzt so aus, es macht Fortschritte aber ich glaube es fehlt mir noch was.... ich weiß auch nicht, ob ich bei allem die richtige Version habe...

    Sieht doch gut aus. Wenn Du den Chromedriver passend zu Deiner Chrome-Version geladen hast, läuft es. Die anderen Dateien, speziell wd_core, werden nur erweitert, da kannst Du auch mit einem älteren Stand normal arbeiten. Hast Du jetzt mal wd_demo versucht zu starten? :?:

    Mein erstes Programm bestand aus ca. 2.000 Lochkarten und nachdem sie mir das erste mal runtergefallen sind, habe ich die letzten beiden der 80 Byte für eine Numerierung benutzt :rofl:

    Einmal editiert, zuletzt von HansJ54 ()

  • Die aktuellste Version des ChromeDriver ist 84.0.4147.30 vom 2020.05.28 für die Version 84 von Chrome.
    Details dazu im wiki.

  • Aber nur, wenn man auch den neuesten Chrome bekommt, oder?


    Mein erstes Programm bestand aus ca. 2.000 Lochkarten und nachdem sie mir das erste mal runtergefallen sind, habe ich die letzten beiden der 80 Byte für eine Numerierung benutzt :rofl:

  • 84.x.x.x scheint die aktuellste Beta zu sein ;)

  • Isso :S

    Mein erstes Programm bestand aus ca. 2.000 Lochkarten und nachdem sie mir das erste mal runtergefallen sind, habe ich die letzten beiden der 80 Byte für eine Numerierung benutzt :rofl:

  • Die aktuellste Version des ChromeDriver ist 84.0.4147.30 vom 2020.05.28 für die Version 84 von Chrome.
    Details dazu im wiki.

    und woran erkenne ich welche ChromeDriver-Version ich habe und ob sie zu meinem Chrome passt? Der ChromeDriver hat keine Nummer, woran ich es erkennen könnte.... :/




    Aber nur, wenn man auch den neuesten Chrome bekommt, oder?


    so sieht es auch bei mir aus... :/



    Nein, Du musst maximal den Chromedriver aktualisieren, wenn sich die ersten beiden Stellen der Versionsnummer von Chrome ändern (aktuell 83) und Du Chrome updatest. Bei den restlichen Dateien gibt es nur Verbesserungen und Korrekturen - wenn Dein Programm einmal läuft, egal ob kompiliert als .exe oder in SciTE , dann sollte es laufen - damit hatte ich bisher keine Probleme. Ich habe den Chromedriver auf einem Netzwerklaufwerk, ist dann nur eine einzige Kopie.

    Das macht mir dann doch wieder ein bisschen Mut... :D



    Sieht doch gut aus. Wenn Du den Chromedriver passend zu Deiner Chrome-Version geladen hast, läuft es. Die anderen Dateien, speziell wd_core, werden nur erweitert, da kannst Du auch mit einem älteren Stand normal arbeiten. Hast Du jetzt mal wd_demo versucht zu starten? :?:

    Ja... habe es gerade getestet.... und es ging tatsächlich ein Fenster aus... scheint zu funktionieren.... :party:

    Aber was mache ich jetzt mir diesem Fenster? Wozu dient es?

    Und wie würde ein Beispiel z.B. für die Googel Startseite aussenen "https://www.google.de" um in das Schreibfeld zu schreiben, die Adresse des Link zu kopieren der unter den Buttons ist und dann auf den Button "Google-Suche" zu klicken? :)


    Gruß

  • und woran erkenne ich welche ChromeDriver-Version ich habe und ob sie zu meinem Chrome passt? Der ChromeDriver hat keine Nummer, woran ich es erkennen könnte....

    IIRC wird das beim Startup in der Konsole ausgegeben.

  • Oder Du startest die Webdriver Exe mit parameter --version.

  • Wenn's läuft kein Problem, ansonsten nimm die V83 von der Downloadseite bis sich der Chrome auf V84 updatet.

    Und wie würde ein Beispiel z.B. für die Googel Startseite aussenen "https://www.google.de" um in das Schreibfeld zu schreiben, die Adresse des Link zu kopieren der unter den Buttons ist und dann auf den Button "Google-Suche" zu klicken? :)

    Schreibe Dir ein kurzes Muster, aber gerade läuft der Tatort ;)

    Wird morgen werden, sind nur ein paar Zeilen. Bei der Suche kommen aber viele Links und nicht nur einer? Du bekommst den Sourcecode der Seite in einer Textvariablen und suchst selbst?

    Mein erstes Programm bestand aus ca. 2.000 Lochkarten und nachdem sie mir das erste mal runtergefallen sind, habe ich die letzten beiden der 80 Byte für eine Numerierung benutzt :rofl:

  • Kleine Demo, ohne Fehlermeldungen usw. Die Suche nach dem Treffer-Link funktioniert bei diesem Beispiel zufällig, bei anderen nicht. Aber die Source solltest Du sowieso selbst analysieren und weiter verarbeiten, die Demo ist nur der Weg dorthin ;)


    Mein erstes Programm bestand aus ca. 2.000 Lochkarten und nachdem sie mir das erste mal runtergefallen sind, habe ich die letzten beiden der 80 Byte für eine Numerierung benutzt :rofl:

  • Kleine Demo, ohne Fehlermeldungen usw. Die Suche nach dem Treffer-Link funktioniert bei diesem Beispiel zufällig, bei anderen nicht. Aber die Source solltest Du sowieso selbst analysieren und weiter verarbeiten, die Demo ist nur der Weg dorthin ;)

    Cool... Vielen Dank... es läuft bei mir... werde jetzt mal bisschen ausprobieren und mich melden bei Bedarf.... :saint: