正则抓取百度搜索结果

<?php
//手机百度搜索
$key   "电脑" ;
$url  'http://m.baidu.com/s?word=' . $key ;
$result  file_get_contents ( $url );
$pattern  '#class="resitem".*?<a.*?href="(.*?)".*?>(.*?)</a>#si' ;
preg_match_all( $pattern , $result , $matches );
 
echo  '<pre>' ;
print_r( $matches [1]);
print_r( $matches [2]);
 
//PC百度搜索
$key   "电脑" ;
$url  'http://www.baidu.com/s?word=' . $key ;
$result  file_get_contents ( $url );
$pattern  '#class="result.*?class="t".*?<a.*?href="(.*?)".*?>(.*?)</a>#si' ;
preg_match_all( $pattern , $result , $matches );
 
echo  '<pre>' ;
print_r( $matches [1]);
print_r( $matches [2]);
 
//说明:(分析PC版)
//正则匹配首先要分析HTML结构,锁定循环部分,<table id="?" 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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值