Google Search Funktion

    • VB.NET

    Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von J.Herbrich.

      Google Search Funktion

      Hey,
      weil ich eine ähnliche Funktion für eines meiner Projekte brauche, dachte ich, komm, stellste eben Public.
      Die Funktion ist dafür da, um Google zu benutzen.
      Also Die Funktion gibt ein Array zurück, z.B so:

      Hallo||hallo.de
      Hallo du||wilkommen.de

      Also im Schema: Titel||URL

      VB.NET-Quellcode

      1. ' ## Funktion by Chris Hilmes Alias Metal Freak :]
      2. ' ## Kein Gewähleistung, dass die Funktion 100% funzt x]
      3. Function googlesearch(ByVal suchStr As String) As Array
      4. Dim tempAL As New ArrayList
      5. Dim tempS As String
      6. Dim req As Net.HttpWebRequest = Net.HttpWebRequest.Create("http://www.google.de/search?hl=de&q=" & suchStr)
      7. Dim res As Net.HttpWebResponse = req.GetResponse
      8. Dim stream As New IO.StreamReader(res.GetResponseStream, System.Text.Encoding.UTF8, True)
      9. Dim html As String = stream.ReadToEnd
      10. tempAL.AddRange(Split(html, "h2 class=r", 12)) 'Quelltext splitten
      11. tempAL.Remove(tempAL.Item(0))
      12. For o As Integer = 0 To tempAL.Count - 1 'In dieser Schleife werden die Suchergebnisse zurecht gesplittet, ohne HTML Tags usw
      13. tempS = ""
      14. tempS = System.Text.RegularExpressions.Regex.Replace(Split(Split(tempAL(o), "class=l", 7)(1), "</a>", 4)(0), "<.*?>", "") 'Hier werden noch die HTML Tags aus dem Titel gefischt
      15. tempS = Mid(tempS, 2) & "||" & Split(Split(tempAL(o), "<a href=""", 9)(1), """")(0)
      16. tempAL(o) = tempS
      17. Next
      18. Return tempAL.ToArray
      19. End Function


      Ich hab kein Plan ob oder wofür ihr die Funktion gebraucht, ist mir erlich gesagt auch egal, aber ich denke dass einige sie wohl gebrauchen können, wofür auch immer ;)

      Lg Chris :]

      e:

      Aufrufen einfach so:

      VB.NET-Quellcode

      1. Listbox1.Items.Addrange(googlesearch("VB"))

      Natürlich geht das auch ein bisschen feiner:

      VB.NET-Quellcode

      1. Dim search As Array = googlesearch("VB")
      2. For i As Integer = 0 To search.Length - 1
      3. ListBox1.Items.Add(i + 1 & ". Titel: " & Split(search(i), "||", 2)(0))
      4. ListBox1.Items.Add(i + 1 & ". URL: " & Split(search(i), "||", 2)(1))
      5. ListBox1.Items.Add("")
      6. Next


      Lg Chris

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Metal Freak“ ()

      Hi ! Danke für den Code.
      Diesen habe ich meiner Meinung nach auch zu 100% übernommen. doch leider erhält meine Listbox keine Daten...
      Kann mir da einer weiter helfen ?
      (eine Fehlermeldung erhalte ich nicht ! )
      Danke im voraus

      also mein code sieht aktuell dann so aus:

      Quellcode

      1. Public Class Form1
      2. Function googlesearch(ByVal suchStr As String) As Array
      3. Dim tempAL As New ArrayList
      4. Dim tempS As String
      5. Dim req As Net.HttpWebRequest = Net.HttpWebRequest.Create("http://www.google.de/search?hl=de&q=" & suchStr)
      6. Dim res As Net.HttpWebResponse = req.GetResponse
      7. Dim stream As New IO.StreamReader(res.GetResponseStream, System.Text.Encoding.UTF8, True)
      8. Dim html As String = stream.ReadToEnd
      9. tempAL.AddRange(Split(html, "h2 class=r", 12)) 'Quelltext splitten
      10. tempAL.Remove(tempAL.Item(0))
      11. For o As Integer = 0 To tempAL.Count - 1 'In dieser Schleife werden die Suchergebnisse zurecht gesplittet, ohne HTML Tags usw
      12. tempS = ""
      13. tempS = System.Text.RegularExpressions.Regex.Replace(Split(Split(tempAL(o), "class=l", 7)(1), "</a>", 4)(0), "<.*?>", "") 'Hier werden noch die HTML Tags aus dem Titel gefischt
      14. tempS = Mid(tempS, 2) & "||" & Split(Split(tempAL(o), "<a href=""", 9)(1), """")(0)
      15. tempAL(o) = tempS
      16. Next
      17. Return tempAL.ToArray
      18. End Function
      19. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      20. ListBox1.Items.AddRange(googlesearch("VB"))
      21. End Sub
      22. End Class

      KidRick schrieb:

      @einfach112
      Ich kann dir nicht bestätigen ob dein Code richtig ist. Aber ich denke Google hat seit 2008 einiges verändert...



      Korrekt, zudem nutzt der Code oben nicht irgend eine spezielle API. Schätzungsweise hat dieser Code solange funktioniert bis Google was am Schema umgestellt hat.

      Der Code oben funktioniert bis zu dieser Stelle.

      VB.NET-Quellcode

      1. Dim tempAL As New ArrayList
      2. Dim tempS As String
      3. Dim req As Net.HttpWebRequest = Net.HttpWebRequest.Create("http://www.google.de/search?hl=de&q=" & suchStr)
      4. Dim res As Net.HttpWebResponse = req.GetResponse
      5. Dim stream As New IO.StreamReader(res.GetResponseStream, System.Text.Encoding.UTF8, True)
      6. Dim html As String = stream.ReadToEnd


      Danach wird das Teil zerhackstückelt, so das tempAL.Count = 0 ist und somit unbrauchbar.
      @einfach112 Du müsstest vermutlich nur den Part mit den Splits anpassen.
      "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

      Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
      Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
      Das hier:

      tempAL.AddRange(Split(html, "h2 class=r", 12))
      tempAL.Remove(tempAL.Item(0))

      Sowie das was in der Schleife drin ist.
      "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

      Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
      Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
      Das hattest du doch in deinem anderen Thread schon fast. Da hab ich dir auch schon geschrieben.

      Anfänger Frage zum Thema google suche auswerten

      Oder suchst du fertigen Code zum kopieren?
      "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

      Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
      Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
      Gepriesen sei das Rauhe Haus,

      Ja, der Code an sich Funktioniert. Ich habe es auch getestet in dem ich den Google Quelltext einer SERP manuell ins Programm gegeben habe. So und jetzt zum Problem.

      Das ist nicht erlaubt in sinne von Google. Das wiederum führt dazu das man eine CAPCHA ausfüllen muss, dazu ist dein Programm natürlich nicht in der Lage.

      Der richtige Weg wäre über die Google Serach API zu arbeiten. Das schöne ist auch das man da dann auch alles in JSON zurück bekommen tut.

      LG, J Herbrich