我對如何從HTML頁面提取特定的href
鏈接感到困惑。當然有很多例子,但是它們似乎涵蓋了當頁面上只有一個頁面時收集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>
基本上我試圖創建一個文本履帶式/刮刀來檢索鏈接。我正在使用的當前頁面從一個主頁面開始,並在導航欄上向下鏈接。導航欄中的這些鏈接是我想要獲得的,因此我可以下載每個頁面的內容,然後檢索我正在查找的真實數據。所以這只是一個大的解析工作,而且我在解析時很糟糕。如果我能弄清楚如何解析這個第一主頁,那麼我將能夠解析子頁面。
我不想讓任何人給我答案,我只是想知道在這種情況下一個好的解析方法。 IE如何將分析縮小到只有這些標記,然後將存儲這些鏈接的好動態方式,以便以後可以訪問它們?我希望這是有道理的。
編輯:好吧,我現在試圖用很多困惑使用HtmlAgilityPack。據我所知,這將檢索所有的都是<div class="acTrigger">
是頁I負載範圍內的節點:
var div = html.DocumentNode.SelectNodes("//div[@class='acTrigger']");
下一個問題是我如何得到<div>
標籤內,並進入<a>
標籤,然後檢索href
價值,並存儲它。