Web ページからアドレス情報を抽出する
-
09-06-2019 - |
質問
Web ページを取得し、ページからアドレス情報を抽出する必要があります。いくつかは他のものよりも簡単です。これを実現するのに役立つ Firefox プラグイン、Windows アプリ、または VB.NET コードを探しています。
理想的には、管理画面 (ASP.NET/VB.NET) に Web ページを用意して、URL を入力するとページがスクラップされ、グリッドに配置できるデータセットが返されるようにしたいと考えています。
解決
ページの形式がわかっている場合 (たとえば、ページがすべて ashnha.com ページに似ている場合)、これを行う VB.NET コードを作成するのは非常に簡単です。
- を作成します System.Net.WebRequest そして応答を文字列に読み取ります。
- 次に、System.Text. RegularExpressions.Regexそして、それとあなたが取得したばかりの文字列との間の一致のコレクションを反復します。各試合について、データテーブルに新しい行を作成します。
難しいのは正規表現を書くことですが、これはちょっとした黒魔術です。見る regexlib.com 正規表現に関するツールや書籍などがたくさんあります。
HTML 形式が正規表現として十分に明確に定義されていない場合は、どのビットがアドレスであるかを特定するために、ある程度のユーザーの介入に依存する必要があるでしょう...
他のヒント
Aza Raskin は、選択したテキストがアドレスであることを認識することについて、著書で語っています。 Firefox の提案:より優れた新しいタブ画面. 。まだコードはありませんが、将来これを行うためのコードが Firefox に登場する可能性があるため、言及しておきます。
あるいは、 Ubiquityのmapコマンド, ただし、アドレスを自分で選択する必要があります。
VB.NET での一般的な HTML 画面スクレイピングについては、以下を確認してください。 HTML アジリティ パック. 。Regex を試みるよりもはるかに簡単です (すでに Regex 忍者である場合を除く)。
回答で言及したページは、アドレスが一貫した形式であるため、自動化が簡単です。
しかし、ユーザーが任意のページをポイントできるようにするのは、はるかに困難な作業です。データはどのような形式であっても構いません。すべてのテキストをダンプする何かを作成し、テキストがどのように分割されているかを推測し、国名や州名、電話番号などのビットを認識してみて、ユーザーが不足しているセクションを補完したり、テキストを移動したりできるインターフェイスで結果を表示することができます。分割線を使用して、見逃したビットや望ましくないビットを特定します。
ただし、これは簡単ではありません。検証済みのフォーム フィールドに単純にカット アンド ペーストするよりも大きな利点を提供するインターフェイスを作成することは、かなりの成果になると思います。どうやってやっていくのか知りたいです。
編集:あなたがやりたいことのかなりの部分をカバーしているかもしれないこの他の質問に気づきました:文字列から使用可能な住所、都市、州、郵便番号を解析します