Per Webbrowser Control Images herunterladen (komische IDs/Tags)

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von bobblin.

    Per Webbrowser Control Images herunterladen (komische IDs/Tags)

    Hallo erstmal, ich möchte, dass mein Program auf Pixabay geht und in einer von mir vorher vorgegebenen Kategorie nach Bildern sucht. Das funktioniert erstmal ohne Probleme. Jedoch möchte ich, dass er alle Bilder auf dieser Seite herunterlädt und sortiert(z.B. nach den alt-identifiern). Leider war das dann doch nicht mehr so einfach wie bei Buttons, weswegen ich hier nachfragen wollte(natürlich habe ich erstmal auf Google alles abgesucht). Ich weiß nämlich nicht, wie er wissen soll, dass er ein Bild herunterladen muss und danach auch noch das Bild neben dran zum Beispiel auch herunterladen muss. Habe bisher immer nur mit dem Inspector von Google Chrome gearbeitet und bin auf keinen Tag bzw. keine ID gefunden, die er jedesmal ansprechen könnte. Das Problem ist ja, dass er nicht wüsste wie ein Bild heißt, wenn es keine einheitliche Benennung oder sowas in der Art gäbe. Mein Quellcode bis jetzt:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. 'navigates to pixabay.com
    3. Try
    4. WebBrowser1.Navigate(New Uri("https://pixabay.com/en/"))
    5. Catch ex As Exception
    6. End Try
    7. ListBox1.SetSelected(1, True)
    8. Dim abc As String = (ListBox1.SelectedItem)
    9. WebBrowser1.Document.GetElementById("input").InnerText = abc
    10. 'ListBox1.SelectedItem = ""
    11. Try
    12. WebBrowser1.Document.GetElementById("submit").InvokeMember("Click")
    13. Catch ex As Exception
    14. End Try


    Vielen Dank schon Mal!
    Hallo und Willkommen im Forum

    Ich habe nur mal schnell nachgesehen. Die Bilder sind alle innerhalb eines DIV mit mit class=item. Und innerhalb der Childs des Objects liest du das scr Attribut des IMG aus.
    Probier das mal und wenn du wo hängst melde dich am besten hier wieder.

    Grüße
    Sascha

    PS: Verwende bitte die normale Schriftgröße, es bringt dir keine Sympatiepunkte wenn du extra groß schreibst, eher im Gegenteil. Nicht böse gemeint, nur ein Tipp von mir.
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Vielen Dank für die schnelle und hilfreiche Antwort.
    Also so wie ich das sehe müsste ich dann div.item ansprechen und danach src.img . Jedoch wüsste ich nicht konkret, wie er das Bild dann herunterladen soll. Ich würde halt jedem Bild eine src zuweisen in einer Tabelle oder sowas(keine Ahnung ob das jetzt effizient ist), um eben von einem Bild zum anderen rüberzugehen.

    Vollzitat entfernt. ~Thunderbolt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    @bobblin Willkommen im Forum. :thumbup:
    Unterlass bitte das vollständige Zitieren von Posts über Deinen.
    Schmeiß die allgemeinen Exceptions raus, wir wollen doch Fehler finden und nicht verschleiern.
    Und dann gib Deinem Programm Option Strict On, damit Du von anbeginn mit den richtigen Datentypen arbeitest.
    Visual Studio - Empfohlene Einstellungen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermanynull

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Option Strict On
    3. 'navigates to pixabay.com
    4. WebBrowser1.Navigate(New Uri("https://pixabay.com/en/"))
    5. ListBox1.SetSelected(1, True)
    6. Dim abc As String = (ListBox1.SelectedItem)
    7. WebBrowser1.Document.GetElementById("input").InnerText = abc
    8. WebBrowser1.Document.GetElementById("submit").InvokeMember("Click")


    Habe jetzt das mal so umformt, wie von dir gewünscht. Und an das nicht vollständige Zitieren gedacht.

    bobblin schrieb:

    VB.NET-Quellcode

    1. Option Strict On
    steht außerhalb der Klassen und Prozeduren, Dein Code sonst ist weiterhin Strict Off. ;(
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. 'navigates to pixabay.com
    3. WebBrowser1.Navigate(New Uri("https://pixabay.com/en/"))
    4. ListBox1.SetSelected(1, True)
    5. Dim abc As String = CType((ListBox1.SelectedItem), String)
    6. WebBrowser1.Document.GetElementById("input").InnerText = abc
    7. 'ListBox1.SelectedItem = ""
    8. WebBrowser1.Document.GetElementById("submit").InvokeMember("Click")
    @bobblin Wird doch. ;)

    VB.NET-Quellcode

    1. ListBox1.SelectedIndex = 1
    2. Dim abc As String = ListBox1.SelectedItem.ToString()
    Was ist nun noch unklar?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @bobblin Ich würde da nicht über den WebBrowser gehen, sondern über einen WebClient docs.microsoft.com/en-us/dotne…a?view=netframework-4.7.2
    Die Adresse siehst Du Dir in Deinem Browser an: Rechte Maustaste => Grafikadresse kopieren und im Code einfügen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Desweiteren solltest du dir mal von pixabay die Nutzungsbestimmungen durchlesen...
    pixabay.com/de/service/terms/
    Das Automatisierende Erfassen von Daten oder Extraktion ist strikt untersagt außer du bekommst eine Genehmigung von denen.

    Desweiteren gibt es eine API : pixabay.com/de/service/about/api/
    Spoiler anzeigen
    To keep the Pixabay API fast for everyone, requests must be cached for 24 hours. Also, the API is made for real human requests; do not send lots of automated queries. Systematic mass downloads are not allowed. If needed, we can increase this limit at any time - given that you've implemented the API properly.


    Und dort gibt es viele Beispiele wie die API genutzt werden kann.
    pixabay.com/api/docs/


    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen