zoukankan      html  css  js  c++  java
  • 正则方式的自动小偷抓网程序

    公司里面有许多数据没人去录入,做一个抓取网页的程序,以前做CMS系统的时候涉及过,不过这次的处理HTML上和以前做了些区别。有一些瑕疵没时间细化,只是实现了效果,大家看一看这个正则该怎么写好:

    URL:http://news.szhome.com/83642.html

    内容:

    object></div></div>

    </div>


    <div class="share"><div class="linkshare" style="right: 0">

    这两个标记之间的代码。END标记的问题解决了,但是郁闷的是START截取的标记因为第二个DIV和第三个中间有换行,我无语了不知道怎么处理这个正则。

    而且郁闷的是有多处有这种重复型标记,对正则不太熟悉,我的解决方法如下:

                       MatchCollection mc = Regex.Matches(ghoPage.Trim(), @"(?<=<div class=['""]txtmsg['""]>)[\s\S]*?(?=<div class=['""]share['""]><div class=)", RegexOptions.CultureInvariant | RegexOptions.IgnoreCase);


                    foreach (Match mm in mc)
                    {
                        sb.Append(mc[0].Value.Substring(1933, mc[0].Value.Length - 1933));
                    }

    我算出截取出来多处两个FLASH广告DIV的长度是1933,然后处理字符串截取后得到我想要的文本,这样做的劣势就是万一该站改变了两个FLASH广告DIV的长度我获取的数据就不是完整的呢,有兴趣的研究下,看看换行的DIV正则问题怎么处理。

    里面用到了自己写的一个BUTTON控件,可以在点击后禁止重复点击,然后就是一些判断,在思路上蛮不错,可以做到一直抓取,因为不经常用就没做成WINDOWS服务类型,这样的程序可以做成WINDOWS服务,把规则写在INI文件中,抓录的规则和正则也放在配置文件中,这样就能实现自动抓录。

    很短的代码,对这种抓录有兴趣的朋友可以尝试下。下载

  • 相关阅读:
    LeetCode: Longest Valid Parentheses 解题报告
    LeetCode: Generate Parentheses 解题报告
    Leetcode: LRU Cache 解题报告
    LeetCode: Maximal Rectangle 解题报告
    LeetCode: Min Stack 解题报告
    LeetCode: Restore IP Addresses 解题报告
    LeetCode: Longest Common Prefix 解题报告
    LeetCode: Regular Expression Matching 解题报告
    Python——rrdtool模块的安装
    python-xlsxwriter模块绘制表格
  • 原文地址:https://www.cnblogs.com/javabin/p/2257508.html
Copyright © 2011-2022 走看看