C# 从html C检索某些href链接#

C# 从html C检索某些href链接#,c#,html,parsing,web-crawler,href,C#,Html,Parsing,Web Crawler,Href,我对如何从HTML页面中提取特定的href链接有点困惑。当然有很多例子,但它们似乎涵盖了收集href(当页面上只有一个链接时)或收集所有链接 因此,我目前使用HttpWebRequest、HttpWebResponse和StreamReader将HTML文档推送到文本文件中 这是我正在使用的小示例,它只是下载我选择的URL并将其保存到文本文件中 protected void btnURL_Click(object sender, EventArgs e) { string url = t

我对如何从HTML页面中提取特定的
href
链接有点困惑。当然有很多例子,但它们似乎涵盖了收集
href
(当页面上只有一个链接时)或收集所有链接

因此,我目前使用
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 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>

下一个问题是如何进入
标记并进入
标记,然后检索
href
值并存储它

我建议将HTML放在HtmlDocument控件()或WebBrowser控件()中,而不是尝试手动解析文本文件。这允许您访问已解析的元素。从那里,您可以轻松找到所有具有适当类的DIV元素,然后找到其中的A元素。

查看库。然后根据需要抓取URL

IWebElement anchorUrl1 = driver.FindElement(By.XPath("//nav[@class='deptVertNav']/div[1]/a[1]"));
string urlText1 = anchorUrl1.Text;
IWebElement anchorUrl2 = driver.FindElement(By.XPath("//nav[@class='deptVertNav']/div[2]/a[1]"));
string urlText2 = anchorUrl2.Text;
如果您只需单击它们,则:

driver.FindElement(By.XPath("//nav[@class='deptVertNav']/div[1]/a[1]")).Click();
driver.FindElement(By.XPath("//nav[@class='deptVertNav']/div[1]/a[1]")).Click();