求php搜索百度结果的正则表达式

$key="电脑";$url='http://m.baidu.com/s?word=$key';$result=file_get_contents($url);preg_... $key = "电脑";
$url = 'http://m.baidu.com/s?word=$key';
$result = file_get_contents($url);
preg_match(这就不会写了);

为了页面小点,我就用了m.baidu.com的地址。
现在是想把搜索的结果,把标题和链接放到数组里
这样我就比较好提取每一条结果的标题和链接
请各位帮忙,谢谢!
展开
 我来答
Zjmainstay
2013-05-31 · 知道合伙人互联网行家
Zjmainstay
知道合伙人互联网行家
采纳数:580 获赞数:1129
http://www.zjmainstay.cn

向TA提问 私信TA
展开全部
<?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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式