通过文件扩展名在网页上过滤链接

时间:2017-05-05 23:13:32

标签: c# html html-agility-pack

我正在开发程序以从网页中提取链接,并使用HtmlAgilityPack将其过滤到目前为止我的代码

HtmlWeb hw = new HtmlWeb();
        HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
        doc = hw.Load(txt_url.Text);
        foreach (HtmlNode link in doc.DocumentNode.SelectNodes("a//[@href]"))
        {
            // Get the value of the HREF attribute
            string hrefValue = link.GetAttributeValue("href", string.Empty);
            listbox1.Items.Add(hrefValue);

        }

此代码从网页中提取所有链接,因此我的问题是如何通过扩展名过滤这些网址,如“.html”

2 个答案:

答案 0 :(得分:1)

使用WebClient.DownloadString方法获取html。

然后在字符串上使用正则表达式模式来捕获所有URL。

答案 1 :(得分:1)

首先,您必须执行HTTP GET请求并使用HTML代码获取响应正文。

//Request HTTP GET

ServicePointManager.Expect100Continue = false;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Proxy = null;
request.Method = "GET";

WebResponse response;
string html = "";

response = request.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream());
html = sr.ReadToEnd();
sr.Close();
response.Close();

然后,您可以使用Regex解析HTML代码以提取所需的文件。