2009-05-09 22 views
0

簡単な質問です。.NETを使用してウェブサイトのディレクトリ構造をトラバースするにはどうすればよいですか?

.NETを使用してウェブサイトのディレクトリ構造をトラバースするにはどうすればよいですか?

私がしたいことは、特定のディレクトリにアクセスし、.htmlファイルを探しているファイルをスキャンしてからダウンロードすることです。

WebClient.DownloadString()を使用してファイルをコピーすることがわかっていますが、ディレクトリを検索するにはどうすればよいですか?

答えて

1

Httpには、仕様の一部としてディレクトリリスト/トラバースがありません。あなたができる最善のことは、ディレクトリの既定のページがリスティングであることを願うことです。そして、同じディレクトリ内のファイルへのリンクを探して解析する必要があります。そこリストのフォーマットには基準がありませんが、すべての<a>タグのhref属性を引き出した後、以下の条件のためにそれらを確認するにはあまりにも難しいことではありません。

  • スラッシュは、例えば「ファイル。 html "
  • "/the/directory "を見ている限り、" /the/directory/file.html "と同じディレクトリへのフルパス
  • 同じサーバー上の同じディレクトリへのフルパス。 "http://the.server/the/directory/file.html"

ウェブサーバーがあなたにディあなたはいつでも完全な吹き飛ばされたウェブスパイダーのアプローチ(ページ内のすべてのリンクを解析し、同じサーバー上にあるすべてのリンクを訪問してそれらを解析し、独自のツリー構造を構築することができます)ウェブサイトはこれを簡単に行うことには役に立たない。

+0

ありがとう、それは非常に有用で、魅力のように機能します。 –

1

リンクを抽出するには、ダウンロードしたファイルを解析して<a>タグを検索する必要があります。必要なページがすべてダウンロードされるまで、そのプロセスを再帰的に繰り返します。

Html Agility Packという特別なライブラリを試してみてください。このネットライブラリは、殺害の機能を持っており、それ

は 読み取り/ DOMを書き、プレーン XPATHやXSLTをサポートして構築する機敏なHTMLパーサです。

その後、XPATHを使用して文書を扱いやすくなり、情報を簡単に抽出することができます。