我对如何从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
价值,并存储它。