5

ウィジェットを購入するこの Web サイトがあり、独自の Web ページで各パーツの詳細を提供しています。例: http://www.digikey.ca/product-search/en?lang=en&site=ca&KeyWords=AE9912-ND . データベースにあるすべての部品を検索し、製造元と製造元部品番号の値をフィールドに追加する必要があります。

Visual Basic で Web ページにアクセスして情報を抽出する方法があるとのことでした。誰かがどこから始めるべきか正しい方向に私を向けることができれば、私はこれを理解できると確信しています.

ありがとう。

4

2 に答える 2

5

HTMLAgilityPack(VB.Net)を使用してWebサイトをスクレイプする方法

私は、htmlagilitypackがこれを達成する最も簡単な方法であることに同意します。正規表現を使用するよりもエラーが発生しにくくなります。以下は、私がスクレイピングに対処する方法です。

htmlagilitypack * dllをダウンロードした後、新しいアプリケーションを作成し、nugetを介してhtmlagilitypackを追加、それを参照します。Chromeを使用できる場合は、ページを調べて、情報の場所に関する情報を取得できます。キャプチャする値を右クリックして、その値が含まれているテーブルを探します(HTMLを少しフォローアップします)。

次の例では、「価格設定」テーブル内のそのページからすべての値を抽出します。作成するドキュメントが特定の値を検索できるように、テーブルのXPath値(この値はhtmlagilitypackに検索対象を指示するために使用されます)を知る必要があります。これは、値が含まれている構造を見つけて、XPathを右クリックしてコピーすることで実現できます。これから私たちは得る...

//*[@id="pricing"]

Chromeから取得するXPathがかなり大きい場合があることに注意してください。多くの場合、値が含まれているテーブルに固有の何かを見つけることで単純化できます。この例では「id」ですが、他の状況では、見出しやクラスなどになります。

このXPath値は、idがpriceingに等しいもの、つまりテーブルを探します。さらに詳しく調べると、値がtbody、tr、およびtdタグ内にあることがわかります。HtmlAgilitypackはtbodyでうまく機能しないため、無視してください。新しいXPathは...

//*[@id='pricing']/tr/td

このXPathは、ページ内で価格設定IDを探してから、trタグとtdタグ内のテキストを探すことを示しています。次に、コードを追加します...

Dim Web As New HtmlAgilityPack.HtmlWeb
Dim Doc As New HtmlAgilityPack.HtmlDocument
Doc = Web.Load("http://www.digikey.ca/product-search/en?lang=en&site=ca&KeyWords=AE9912-ND")
For Each table As HtmlAgilityPack.HtmlNode In Doc.DocumentNode.SelectNodes("//*[@id='pricing']/tr/td")

Next

値を抽出するには、ループで作成されたテーブル値とその内部テキストメンバーを参照するだけです。

Dim Web As New HtmlAgilityPack.HtmlWeb
Dim Doc As New HtmlAgilityPack.HtmlDocument
Doc = Web.Load("http://www.digikey.ca/product-search/en?lang=en&site=ca&KeyWords=AE9912-ND")
For Each table As HtmlAgilityPack.HtmlNode In Doc.DocumentNode.SelectNodes("//*[@id='pricing']/tr/td")
    MsgBox(table.InnerText)
Next

これで、値をポップアップするメッセージボックスができました...配列リストのメッセージボックスを切り替えて、入力するか、値を格納する方法を選択できます。次に、取得したい他のテーブルについても同じことを行います。

作成されたDoc変数は再利用可能であるため、同じページ内の別のテーブルを循環する場合は、ページをリロードする必要がないことに注意してください。これは、特に多くのリクエストを行う場合、Webサイトをバタンと閉めたくない場合、および多数のスクレイプを自動化する場合は、リクエストの間に時間がかかる場合に適しています。

スクレイピングは本当に簡単です。それが基本的な考え方です。楽しむ!

于 2013-02-13T19:07:12.873 に答える
0

Html Agility Packがあなたの味方になります!

Html Agility Pack (HAP) とは正確には何ですか?

これは、読み取り/書き込み DOM を構築し、プレーンな XPATH または XSLT をサポートするアジャイル HTML パーサーです (実際には、使用するために XPATH や XSLT を理解する必要はありません。心配はいりません...)。これは、「Web 以外の」HTML ファイルを解析できる .NET コード ライブラリです。パーサーは、「実際の」不正な HTML に対して非常に寛容です。オブジェクト モデルは、System.Xml を提案するものと非常に似ていますが、HTML ドキュメント (またはストリーム) 用です。

あなたが提供したサンプルページのソースを見ると、彼らはマークアップで HTML5 Microdata を使用しています。さらに検索してCodePlex、役立つかもしれないmicrodataパーサーを見つけました:MicroData Parser

于 2013-02-13T17:53:04.657 に答える