zoukankan      html  css  js  c++  java
  • 使用php的curl根据关键词爬取百度搜索结果页

    http://bbs.csdn.net/wap/topics/390938327

    正则表达式匹配Html标签

     

    查找所有的TD区域(最短):
    <tds*.*>s*.*</td>

    查找所有的TR:
    <tr.*(?=>)(.| )*?</tr>

    查找所有的TD:
    <td.*(?=>)(.| )*?</td>

    正则表达式匹配Html标签

    例1.
    以下是一段Html代码
    <table boder="0" width="11%" class="somestory">
    <tr>
    <td width="100%">
    <p align="center">其它内容...</p>
    </td>
    </tr>
    </table>
    <table border="0" width="11%" class="headline">
    <tr>
    <td width="100%">
    <p align="center">典经HTML正则表达式!</p>
    </td>
    </tr>
    </table>
    <table boder="0" width="11%" class="someotherstory">
    <tr>
    <td width="100%">
    <p align="center">其它内容...</p>
    </td>
    </tr>
    </table>

    正则表过式:<table.*(?=headline)
    说明:正则表达式匹配表格开始标记,能够返回开始标记直至 “headline”之间的所有内容(换行除外);
    就是以上红色标示出来的部分。
    原理:
    <table                           //匹配的开始部分
    .*                                   //除换行外的所有字符
    (?=headline)               //零宽度正预测先行断言,匹配以 headline 结尾的单词的前面部分(除了 headline 以外的部分)


    例2.
    <table boder="0" width="11%" class="somestory">
    <tr>
    <td width="100%">
    <p align="center">其它内容...</p>
    </td>
    </tr>
    </table>
    <table border="0" width="11%" class="headline">
    <tr>
    <td width="100%">
    <p align="center">典经HTML正则表达式!</p>
    </td>
    </tr>
    </table>
    <table boder="0" width="11%" class="someotherstory">
    <tr>
    <td width="100%">
    <p align="center">其它内容...</p>
    </td>
    </tr>
    </table>

    正则表达式:<table.*(?=headline)(.| )*?</table>
    说明:匹配最长的以 <table border="0" width="11%" class=" 开始, 以</table>结束的字符串,就是以上以红色标示出来的

    部分。

    原理:
    <table.*(?=headline)                  //参见记录1的说明
    (.| )                                             //指示在两个或多个项之间进行选择,(zlf)ood 与 "zood" 或 "food" 匹配
    *?                                                //应与上一个 (.| ) 联合起来看,  .*? 就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复,懒惰模式。
    </table>                                     //匹配的结束标记

    注意:“(.| )”后面的 "*" 匹配 0 个到多个任意字符,而“?”使得“*”匹配范围最小化,即在找到表达式的下一部分之前匹配尽可能少的字符。</table> 是表格的结束标记.

    例3.
    <tableboder="0" width="11%" class="somestory">
    <tr>
    <td width="100%">
    <p align="center">其它内容...</p>
    </td>
    </tr>
    </table>
    <tableborder="0" width="11%" class="headline">
    <tr>
    <td width="100%">
    <p align="center">典经HTML正则表达式!</p>
    </td>
    </tr>
    </table>
    <tableboder="0" width="11%" class="someotherstory">
    <tr>
    <td width="100%">
    <p align="center">其它内容...</p>
    </td>
    </tr>
    </table>

    正则表达式:<(?<tag>[^s>]+)[^>]*>(.| )*?</k<tag>>
    说明:匹配成对的HTML标签,它将会匹配Html标签及标签中的内容,本例分三段匹配三个<table>标签及</table>中的内容。
    原理:
                                       //html标签中的 <
    (?<tag>[^s>]+)            // (?<name>), 分组命名的方式,[^s>]:非任何空白字符及“>”至少匹配一次
    [^>]*>                            //非“>”匹配 0 到 n 次,及html的标签“>”.
    (.| )                              //在两个或多个项之间时行选择,(zlf)ood 与 "zood" 或 "food" 匹配.
    *?                                  // 应与上一个(.| )联合起来看, .*? 就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复,懒惰模式。
    </k<tag>>                    //反向引用命名的组,语法为 k<name>, 及html 标签“>”

    注意:“(.| )”后面的 "*" 匹配 0 个到多个任意字符,而“?”使得“*”匹配范围最小化,即在找到表达式的下一部分之前匹配尽可能少的字符。
    本例使用了分组命名及反向引用命名组的概念。

    正则表达匹配中文
    匹配中文字符的正则表达式:   [u4e00-u9fa5]
    1、先用js把中文转换16进制码:d.innerHTML = escape("你们"); 得到 %u4F60%u4EEC, 即 u4F60u4EEC

    2、var arr = str.match(/u4F60u4EEC/g); 

    3、u4F60为单个汉字“你”.

    4、以上测试程序为javascript

  • 相关阅读:
    在C#代码中应用Log4Net(二)典型的使用方式
    在C#代码中应用Log4Net(一)简单使用Log4Net
    Windows Azure Active Directory (2) Windows Azure AD基础
    Windows Azure Virtual Network (6) 设置Azure Virtual Machine固定公网IP (Virtual IP Address, VIP) (1)
    Windows Azure Active Directory (1) 前言
    Azure China (6) SAP 应用在华登陆 Windows Azure 公有云
    Microsoft Azure News(3) Azure新的基本实例上线 (Basic Virtual Machine)
    Microsoft Azure News(2) 在Microsoft Azure上运行SAP应用程序
    Microsoft Azure News(1) 新的数据中心Japan East, Japan West and Brazil South
    Windows Azure HandBook (2) Azure China提供的服务
  • 原文地址:https://www.cnblogs.com/as3lib/p/6834055.html
Copyright © 2011-2022 走看看