0

これは私の最初の投稿です。私は以前このサイトを使用し、最終的にアカウントを作成することにしました。

私はurl'sグーグル検索が出てくる最初の50のサイトのリストをリストするプログラムを作ろうとしています。私はVB.netの初心者です。もっと簡単なことを試してみるべきだと思いますが、本当にこのプログラムを作りたいと思っています。

これを実現する方法は、HTMLを取得し、そこからサイトへのリンクを取得することでしたが、Google検索結果ページのHTMLを見ると、ほとんどのリンクがありませんでした。そこで、結果の1つを右クリックすると、タグurl'sの間にが見つかることがわかりました。<cite>

ここに画像の説明を入力してください

私の質問は
、各要素から文字列にHTMLを取得するにはどうすればよいですか?

4

2 に答える 2

0

との間にあるものを抽出することだけに関心があると仮定する<cite>と、各項目</cite>を分割してから<cite>削除することで文字列を解析できます。各アイテムからとを</cite>削除することもできます。インデックス1から配列の上限までのアイテムには、リンクが必要です。<b></b>

于 2013-01-18T23:02:12.353 に答える
0

HTML Agility Packを使用すると、 HTMLの解析プロセスを大幅に簡素化できます。

これがあなたが探していることをするための非常に基本的な実装です:

Private Sub DoSearch(query As String)
    Dim wc = New WebClient()
    wc.DownloadStringAsync(New Uri("http://google.com/search?q=" + query))
    AddHandler wc.DownloadStringCompleted, AddressOf ParseResults
End Sub

Private Sub ParseResults(sender As Object, e As DownloadStringCompletedEventArgs)
    LvResults.Items.Clear()

    If e.Error IsNot Nothing Then
        MsgBox(e.Error.Message, MsgBoxStyle.Critical Or MsgBoxStyle.OkOnly)
        Exit Sub
    End If

    Dim htmlDoc As New HtmlAgilityPack.HtmlDocument()
    htmlDoc.LoadHtml(e.Result)

    For Each node In htmlDoc.DocumentNode.SelectNodes("//h3[@class='r']/a")
        Dim item As New ListViewItem(node.InnerText)
        item.SubItems.Add(CleanURL(node.Attributes("href").Value))
        LvResults.Items.Add(item)
    Next

    LvResults.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent)
End Sub

Private Function CleanURL(url As String) As String
    url = url.Replace("/url?q=", "")
    If url.Contains("&") Then url = url.Split("&"c)(0)
    Return url
End Function

HTML Agility Packを正常に使用するための秘訣は、正しい結果を生成する正しいXPathを知ることですが、これは、特に初めてのユーザーにとっては注意が必要な場合があります。

したがって、HAP Testbedをダウンロードして、探しているものが正確に得られるまで(変更をテストするためにアプリケーションを継続的にデバッグする必要なしに)、複数のXPathをテストおよび実験できるようにすることを強くお勧めします。


必要に応じて、次のコードを実装する機能サンプルをダウンロードできます:SearchToListView

于 2013-01-19T00:11:18.880 に答える