如何利用正则表达式抓取博客园列表数据-创新互联
这篇文章主要为大家展示了“如何利用正则表达式抓取博客园列表数据”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何利用正则表达式抓取博客园列表数据”这篇文章吧。
10年积累的成都网站建设、成都网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有互助免费网站建设让你可以放心的选择与我们合作。在抓取博客园数据的时候采用了正则表达式,所以有不熟悉正则表达式的朋友可以参考相关资料,其实很容易掌握,就是在具体的实例中会花些时间。
现在我就来把我抓取博客园数据的过程叙述一下,如果有朋友有更好的意见,欢迎提出来。
要使用正则表达式抓取数据,首先就要创建一个正则表达式进行匹配,我推荐使用regulator,这个正则表达式工具,我们可以先使用这个工具把我们要使用的正则表达式拼接出来,然后在程序中使用。
我发现博客园的首页列表可以通过http://www.cnblogs.com/p1,p2...这种方式来直接访问,这样我们就可以直接通过url获取数据,而不用模拟数据点击事件来虚拟的点击下一页的那个按钮获取数据,更加方便。因为我的目的就是抓取一些数据,所以就简单点。
1.首先就是要写对应的sql Helper类,相信这是很多程序员都会掌握的,无非就是增删改查的操作。在创建好了sqlhelper类之后,我们就可以开始进行抓取数据的逻辑处理。
2.创建BlogRegexController
public class BlogRegexController : Controller { public void ExecuteRegex() { string strBaseUrl = "http://www.cnblogs.com/p"; //定义博客园可以访问的列表数据的基地址 for (int i = ; i <= ; i++)//因为博客园首页列表较大只有页,所以我们这个循环就执行次 { string strUrl = strBaseUrl + i.ToString(); BlogRege blogRegex = new BlogRege(); //定义的具体的Regex类 抓取博客园地址 string result = blogRegex.SendUrl(strUrl); blogRegex.AnalysisHtml(result); Response.Write("获取成功"); } } // // GET: /BlogRegex/ public ActionResult Index() { ExecuteRegex(); return View(); } }
在controller中的ExecuteRegex()方法就是执行抓取博客园列表数据的功臣。
3.首先就是其中定义的BlogRege类,他负责抓取博客园列表数据并将其插入到数据库中
public class BlogRege { //负责把数据插入到数据库中 使用到的是sqlhelper类 public void Insert(string title, string content,string linkurl, int categoryID = ) { SqlHelper helper = new SqlHelper(); helper.Insert(title, content, categoryID,linkurl); } ////// 通过Url地址获取具体网页内容 发起一个请求获得html内容 /// /// ///public string SendUrl(string strUrl) { try { WebRequest webRequest = WebRequest.Create(strUrl); WebResponse webResponse = webRequest.GetResponse(); StreamReader reader = new StreamReader(webResponse.GetResponseStream()); string result = reader.ReadToEnd(); return result; } catch (Exception ex) { throw ex; } } /// /// 分析Html 解析出里面具体的数据 /// /// public void AnalysisHtml(string htmlContent) {//这个就是我在regulator正则表达式工具中拼接获取到的正则表达式 还有一点请注意就是转义字符的问题 string strPattern = "