正则抓取百度搜索结果
发布时间:2020-12-14 01:58:18 所属栏目:百科 来源:网络整理
导读:?php //手机百度搜索 $key = "电脑" ; $url 'http://m.baidu.com/s?word=' . ; $result = file_get_contents ( ); $pattern '#class="resitem".*?a.*?href="(.*?)".*?(.*?)/a#si' ; preg_match_all( , $matches ); echo 'pre' ; print_r( [1]); [2]); //PC百
<?php
//手机百度搜索
$key
=
"电脑"
;
$url
'http://m.baidu.com/s?word='
.
;
$result
=
file_get_contents
(
);
$pattern
'#class="resitem".*?<a.*?href="(.*?)".*?>(.*?)</a>#si'
;
preg_match_all(
,
$matches
);
echo
'<pre>'
;
print_r(
[1]);
[2]);
//PC百度搜索
;
'http://www.baidu.com/s?word='
;
);
'#class="result.*?class="t".*?<a.*?href="(.*?)".*?>(.*?)</a>#si'
;
);
;
[1]);
[2]);
//说明:(分析PC版)
//正则匹配首先要分析HTML结构,锁定循环部分,<tableid="?"class="result...></table>
//然后取得最简锚点,class="result(这里没有后面的",因为存在class="result-op"这种)
//接下来再对循环内部进行取锚点,class="result...<a...href="..."...>...</a>
//而在整个result中可能存在多种<a.*?href="(.*?)".*?>(.*?)</a>这样的格式,
//因此找到依赖class="t",得到class="result...class="t"...<a...href="..."...>...</a>
//过滤掉其他部分,留下我们想要的内容。
//正则中间的.*?就是用来屏蔽无关内容(...部分),这部分内容对于我们的结果不会造成影响
//而我们需要的链接(href="【...】")和标题(<a..>【...】</a>)则可以使用子模式,
//从而可以在匹配结果中顺序取出,子模式是加括号。
//最后替换...成.*?,需要获取数据的加上括号(),则得到正则表达式:
//'#class="result.*?class="t".*?<a.*?href="(.*?)".*[问号]>(.*?)</a>#si'
//注:?>注释时连在一起写会语法错误,使用时请将[问号]换回来
//End_php
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何实现测试隔离测试Oracle PL/SQL?
- XPath查询XML节点,冒号在节点名称中
- 正则表达式的用法及其扩展
- 文件格式转换工具Print2Flash
- VUE-Table上绑定Input通过render实现双向绑定数据的示例
- ruby-on-rails – Ruby on Rails REST设计问题 – 在账户之
- 【转】实战DDD(Domain-Driven Design领域驱动设计:Evans DD
- cocos2dx 创建工程提示警告
- 报错:Could not find artifact com.gzydt.report:gzydt-re
- c# – 如何实现Portable HttpClient的进度报告