技术文章 > [原创]精确提取网页所有链接的正则表达式及C#源代码

[原创]精确提取网页所有链接的正则表达式及C#源代码

2018-10-20 00:23

文档管理软件,文档管理系统,知识管理系统,档案管理系统的技术资料:

精确提取网页所有链接的正则表达式及C#源代码[原创]

最近在用C#做网络蜘蛛(爬虫软件),当然首先需要提取页面信息中的所有链接以便进一步进行处理。
合适的网址继续发掘抓取。但是,看似简单的工作,网上找了一圈,倒是有不少可以借鉴的类似代码。问题是多数代码都不能精确进行匹配。
当然就是正则表达式的问题了,经过认真修改和调试,以下代码的精确度是很高的了。

using System;
using System.Text;
using System.Text.RegularExpressions;
using System.Collections;

public ArrayList GetUrls(string strResponse)
{

#region 提取本页面的链接并添加到新任务中

// parse the page to search for refs
string strRef = @“<a[^>]+href=\s*(?:“(?<href>[^“]+)“|““(?<href>[^““]+)““|(?<href>[^>\s]+))\s*[^>]*>“;
Regex re = new Regex(strRef, RegexOptions.IgnoreCase | RegexOptions.Singleline);

MatchCollection matches = re.Matches(strResponse);

ArrayList ulist = new ArrayList();
foreach (Match match in matches)
{
strRef = match.Groups[“href“].Value.Trim().ToLower();
ulist.Add(strRef);
}

#endregion

return ulist;
}