0

私は HtmlAgilityPack に不慣れで、正確にどのように機能するかが少しわかりません。このコードのようなものがいつ書かれたとしましょう

Dim url1 As String = "http://www.bing.com/search?q=Verizon
Dim hw As New HtmlWeb()
Dim doc As HtmlDocument = hw.Load(url1)
For Each link As HtmlNode In doc.DocumentNode.SelectNodes("//a[@href]")

Dim att As HtmlAttribute = link.Attributes("href")
Response.Write(att.Value)

Next
  1. では、それSelectNodesはタグ//a[@href]のみを参照するという意味ですか?ahref
  2. もしそうなら、どうすれば のようにループ内の他のタグを考慮することができますか<li>, <h3>, <div>。のように正しいです//li[@class='wrap']|//div[@class='last']か??
  3. これらのタグ間のデータを取得して表示するにはどうすればよいですか。

もう 1 つの問題は、その URL から電話番号をスクレイピングする必要があるとしましょう。番号が利用できないか、定義されたタグのいずれにも含まれていない可能性があります。相対検索語に対する電話番号を取得するために私が取り組むことができる信頼できる方法はありますか? 提案や考えはありますか?

4

1 に答える 1

0

実際、現在の xpath は、href パラメータを持つアンカー タグを調べます。xpath構文を読むことをお勧めします(たとえば、http://www.w3schools.com/xpath/xpath_syntax.asp

他のノードを選択するには、xpath を変更してこれらのタグを選択する必要があります。たとえば、次のようになります。

doc.DocumentNode.SelectNodes("//li")

すべてのliノードなどを取得します。

タグ内のデータには、選択したドキュメント ノードの InnerHtml を使用してアクセスできます (この例では link.InnerHtml)。

電話番号を自動的にスクレイピングするのは本当に大変です。国によって長さが異なり、番号を書き留める形式もさまざまです。 +12(0)3456 +123456 00123456 +12(0)34-56 はすべて同じ有効な電話番号です。 ...簡単な解決策については、文字列C#に電話番号があるかどうかを確認するを参照してください

GL HF!

于 2013-01-16T16:56:32.483 に答える