2013-08-15 4 views
0

J'ai maintenant mis à jour mon code comme un test Je veux lister toutes les URL qui a le mot index.php mais il affiche également d'autres choses.VB.net extraire les liens de google-search en utilisant HtmlAgilityPack

Voici mon code de travail:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

    Dim webClient As New System.Net.WebClient 
    Dim WebSource As String = webClient.DownloadString("http://www.google.com/search?lr=&cr=countryCA&newwindow=1&hl=fil&as_qdr=all&biw=1366&bih=667&tbs=ctr%3AcountryCA&q=index.php&oq=index.php&gs_l=serp.12..0l10.520034.522335.0.525032.9.9.0.0.0.0.497.3073.1j1j2j0j5.9.0....0...1c.1.25.serp..5.4.884.J4smY262XgY") 
    RichTextBox1.Text = WebSource 

    ListBox1.Items.Clear() 


    Dim htmlDoc As New HtmlAgilityPack.HtmlDocument() 
    htmlDoc.LoadHtml(WebSource) 

    For Each link As HtmlNode In htmlDoc.DocumentNode.SelectNodes("//cite") 

     If link.InnerText.Contains("index.php") Then 
      ListBox1.Items.Add(link.InnerText) 
     End If 

    Next 

End Sub 

sortie attendue ne devrait être des sites Web qui a index.php là-dessus, comme celui-ci:

http://www.site1.com/index.php 
http://www.site2.com/index.php 
http://www.site3.com/index.php 
http://www.site4.com/index.php 
http://www.site5.com/index.php 

Mais le problème est que ça s'arrête seulement jusqu'à l'index .php Les autres parties du lien ne sont pas incluses.

par exemple l'URL complète est

http://www.site5.com/index.php?test_test=test&test 

le programme affiche uniquement

http://www.site5.com/index.php 

ou aurait des points brisé comme

http://www.site5.com/index.php...test....test 

Répondre

1

J'utiliser Html Agility Pack pour extraire les liens comme ci-dessous

Dim links As New List(Of String)() 
Dim htmlDoc As New HtmlAgilityPack.HtmlDocument() 
htmlDoc.LoadHtml(WebSource) 
For Each link As HtmlNode In htmlDoc.DocumentNode.SelectNodes("//a[@href]") 
    Dim att As HtmlAttribute = link.Attributes("href") 
    If att.Value.Contains("/forums/") Then 
     links.Add(att.Value) 
    End If 
Next 

si elle est d'essayer quelque chose comme résultat de la recherche Google ci-dessous

For Each link As HtmlNode In htmlDoc.DocumentNode.SelectNodes("//cite") 
    If link.InnerText.Contains("index.php") Then 
     links.Add(link.InnerText) 
    End If 
Next 
+0

Cela fonctionne merci beaucoup. Mais je veux obtenir des liens à partir d'un résultat de recherche google. Où est-ce que je commence? –

+0

vérifier cela http://www.nullskull.com/a/10402928/aspnet--using-htmlagilitypack-to-collect-google-realtime-search-results.aspx – Damith

+0

J'ai un peu de compréhension à propos de HtmlAgilityPack maintenant. Veuillez vérifier mon code mis à jour ci-dessus. Je rencontre actuellement des problèmes lors de l'utilisation de google search. –

Questions connexes