怎样利用正则表达式抓取博客园的列表数据

电脑杂谈  发布时间:2019-05-15 08:24:22  来源:网络整理

正则表达式怎么使用_js正则表达式使用_js怎么使用正则表达式

php中世界最好的语言php中世界最好的语言2018-01-08 10:57:12 原创121

这次给大家带来用利用正则表达式抓取博客园的列表数据,怎样利用正则表达式抓取博客园的列表数据?用正则表达式抓取博客园的列表数据的注意事项有哪些,下面就是实战案例,一起来看一下。

鉴于我在要完成的asp.net MVC 3 仿照博客园企业系统要用到测试数据,我自己输入太累,所以我就抓取了博客园的部分列表数据,还请dudu不要见怪。

在抓取博客园数据的时候采用了正则表达式,所以有不熟悉正则表达式的朋友可以参考相关资料,其实很容易掌握,就是在具体的实例中会花些时间。

js正则表达式使用_js怎么使用正则表达式_正则表达式怎么使用

现在我就来把我抓取博客园数据的过程叙述一下,如果有朋友有更好的意见,欢迎提出来。

要使用正则表达式抓取数据,首先就要创建一个正则表达式进行匹配,我推荐使用regulator,这个正则表达式工具,我们可以先使用这个工具把我们要使用的正则表达式拼接出来,然后在程序中使用。正则表达式怎么使用

我发现博客园的首页列表可以通过,p2...这种方式来直接访问,这样我们就可以直接通过url获取数据,而不用模拟数据点击事件来虚拟的点击下一页的那个按钮获取数据,更加方便。因为我的目的就是抓取一些数据,所以就简单点。

一般地,提起操作会想到“增删改查”这四个字,而dom节点操作也类似地对应于此,接下来将详细介绍dom的节点操作方法。我们知道,要想创建一个类的实例,必须先将该类加载到内存并进行初始化,也就是说,类初始化操作是在类实例化操作之前进行的,但并不意味着:只有类初始化操作结束后才能进行类实例化操作。角色管理需要人工在界面上进行操作,角色管理分为角色组增删改查,以及每个角色组下的角色增删改查。

js正则表达式使用_js怎么使用正则表达式_正则表达式怎么使用

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类,他负责抓取博客园列表数据并将其插入到中

正则表达式怎么使用_js正则表达式使用_js怎么使用正则表达式

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);
     }
     /// <summary>
     /// 通过Url地址获取具体网页内容 发起一个请求获得html内容
     /// </summary>
     /// <param name="strUrl"></param>
     /// <returns></returns>
     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;
       }
     }
     /// <summary>
     /// 分析Html 解析出里体的数据
     /// </summary>
     /// <param name="htmlContent"></param>
     public void AnalysisHtml(string htmlContent)
     {//这个就是我在regulator正则表达式工具中拼接获取到的正则表达式 还有一点请注意就是转义字符的问题
       string strPattern = "<div\\s*class=\"post_item\">\\s*.*\\s*.*\\s*.*\\s*.*\\s*.*\\s*.*\\s*.*\\s*<div\\s*class=\"post_item_body\">\\s*<h><a\\s*class=\"titlelnk\"\\s*href=\"(?<href>.*)\"\\s*target=\"_blank\">(?<title>.*)</a>.*\\s*<p\\s*class=\"post_item_summary\">\\s*(?<content>.*)\\s*</p>";
       Regex regex = new Regex(strPattern, RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.CultureInvariant);
       if (regex.IsMatch(htmlContent))
       {
         MatchCollection matchCollection = regex.Matches(htmlContent);
         foreach (Match match in matchCollection)
         {
           string title = match.Groups[].Value;//获取到的是列表数据的标题
           string content = match.Groups[].Value;//获取到的是内容
           string linkurl=match.Groups[].Value;//获取到的是链接到的地址
          Insert(title, content,linkurl);//执行插入到的操作
         }
       }
     }
   }

4.通过上面的代码我们可以很轻松的从博客园中获取我们用来测试的数据,方便快捷,而且真实,比我们手动输入的速度要快很多。

正则表达式语法(perl正则表达式语法)的讲解,boost.regex库的使用。regex:强大而易用的正则表达式库,支持perl、sed、awk等正则表达式语法。a线正则表达式正则表达式基本语法。

回到我们使用的C#语言上,其实对正则表达式也有着非常好的支持,Regex就是用来对正则表达式进行操作的类,所有的对正则表达式的操作都在这个类中。

js怎么使用正则表达式_js正则表达式使用_正则表达式怎么使用

如果你对正则表达式还不是太熟悉,网上有一篇正则表达式30分钟入门教程,大家可以参考一下,写的很不错。再加上使用一个正则表达式工具,相信可以抓取到任何你想的内容。

bb是整个正则表达式匹配的内容,而b是第一个子正则表达式匹配的内容。一些对正则表达式比较熟悉的人喜欢用记事本来写正则表达式,但是您知道您手写的正则表达式,到底正确吗。正则表达式提取器可以用于对页面任何文本的提取,提取的内容是根据正则表达式在页面内容中进行文本匹配。

ping是基于xml_rpc标准协议的更新通告服务,用于博客把内容更新快速通知给百度,以便百度及时进行抓取和更新。勾选关键内容,表示使用这个规则抓数据的关键标志,ds打数机在抓取数据时会判断网页是否存在这个关键标志,如果存在就立刻采集数据,这样就会大大加快采集速度,如果不存在,ds打数机就不抓取该网页,从而抓取失败,所以,应该根据实际情况选择关键内容。时时彩计划博客更新器是供网友免费使用,软件为c编写,可能部分杀毒软件存在误报,请添加信任即可,每日准时更新人工博客计划地址,所有时时彩人工计划不需东奔西跑,本软件一键更新。

博客园每页列表是20条,一共200页,所以一共是4000条。正则表达式怎么使用数据抓取正确。

我以前说过,只是会代码的程序员不一定是合格程序员,程序员应该尽可能的减少自己的工作量,因为我们都是高智商的人。所以我们应该积极的学习各种对我们的工作有帮助的框架或者是方法,比如IOC、Entity Framework或Nhibernate框架来减轻我们开发维护代码的负担,毕竟我们听到需求要更改的反映,一般都是愤怒,然后大骂,最后才是修改。有些框架能够帮助我们,给我们维护代码带来好心情,何乐而不为呢。

thinkphp3.2开发_青春博客v2.0版本源码 - php源码 - diy博客园。演示地址: 本模板只博主自己仿照卢松松博客开发。我园每周统计公布博客篇数,每月进行博客之星评比,每学期将教师博客进行整理,印刷成册,投放到教师阅览室供教师借阅与参考。

下一次,我准备整理一下在MVC中使用文本编辑器KindEditor的方法,希望大家如果有好的意见或者资料可以提供一下,让我也增加一些见识。谢谢各位


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-98788-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 匡健杰
        匡健杰

        忘不了昨日的美丽

      • 小明王韩林儿
        小明王韩林儿

        不知道是什么品牌味道超级难喝零售假要比RIO便宜2元

      • 颛顼姜烈山
        颛顼姜烈山

        这样一来

      热点图片
      拼命载入中...