HTMLページから特定のhref
リンクを抽出する方法についてちょっと混乱します。確かに多くの例がありますが、ページ上に1つだけある場合はhref
を集めるか、すべてのリンクを集めるかのいずれかをカバーするようです。htmlから特定のhrefリンクを取得するC#
私は現在、HttpWebRequest
,HttpWebResponse
、およびStreamReader
を使用してHTMLファイルをテキストファイルにプッシュします。
私の使っている小さなサンプルがあります。私の選択したURLをダウンロードしてテキストファイルに保存するだけです。
protected void btnURL_Click(object sender, EventArgs e)
{
string url = txtboxURL.Text;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream());
//lblResponse.Text = sr.ReadToEnd();
string urldata = sr.ReadToEnd();
if (File.Exists(@"C:\Temp\test.txt"))
{
File.Delete(@"C:\Temp\test.txt");
}
File.Create(@"C:\Temp\test.txt").Close();
File.WriteAllText(@"C:\Temp\test.txt", urldata);
sr.Close();
response.Close();
}
私はhref
のためのテキストファイル全体を検索することができますが、そこにそれらの多くは、各ページにある、と私が探しているものは<nav>
タグに区画され、その後、彼らはすべてでありますソートのこのような同じクラスで<div>
タグ:
<nav class="deptVertNav>
<div class="acTrigger">
<a href="*this is what I need to get*" ....
....
</a>
</div>
<div class="acTrigger">
<a href="*etc*" ....
....
</a>
</div>
<div class="acTrigger">
<a href="*etc*" ....
....
</a>
</div>
</nav>
は基本的に私はリンクを取得するために、テキストクローラ/スクレーパーを作成しようとしています。私が作業している現在のページは、ナビゲーションバーの横にリンクがあるメインページから始まります。ナビゲーションバーのこれらのリンクは、それぞれのページのコンテンツをダウンロードしてから、私が探している実際のデータを取得するために使いたいものです。だから、これはただ一つの大きな構文解析仕事であり、私は解析するのがひどいです。この最初のメインページを解析する方法を理解できれば、サブページを解析することができます。
私は誰も私に答えを与えたくありません、私はこの状況でどのような良い解析方法があるのか知りたいだけです。私はどのようにこれらのタグだけに構文解析を絞り込み、後でそれらにアクセスできるようにそれらのリンクを格納するための良い動的な方法は何ですか?私はこれが理にかなってほしい。
編集:さて、私は今、多くの混乱でHtmlAgilityPackを使用しようとしています。
var div = html.DocumentNode.SelectNodes("//div[@class='acTrigger']");
次の質問は、私は<div>
タグ内と<a>
タグに取得する方法で、その後、href
を取得:私の知る限りでは、これは私がロードするページ内にある<div class="acTrigger">
あるすべてのノードを取得します値を入力して保存します。