search.php改为百度搜索,php抓取百度邮编搜索结果,应改如何写正则表达式?

题主啊, 你好.

我觉得, 你这个任务, 用不到正则.

为什么呢?

请看里面的搜索结果是什么?

邮编行政区域
250102山东省 济南市 历下区 经十路双号2218-5150
250102山东省 济南市 历下区 经十东路双号33188-33688
250102山东省 济南市 历下区 经十路单号177-3799
250102山东省 济南市 历下区 旅游路港沟水利站机关公寓

好完整的结果, 这已经是一个列表了.

因为具体还没有看, 一会我来告诉你怎么处理.我先php试一下.

//有单独邮编的网址

$url = 'http://opendata.baidu.com/post/s?wd=%C9%BD%CE%F7&p=mini&rn=20';

// 没有单独邮编的网址

//$url= 'http://opendata.baidu.com/post/s?wd=%C9%BD%B6%AB%CA%A1%BC%C3%C4%CF%CA%D0%C0%FA%CF%C2%C7%F8%C6%BD%B0%B2%BA%FA%CD%AC&p=mini&rn=20';

// xpath 解析文档

$dom = new DOMDocument;

libxml_use_internal_errors(TRUE);

$dom->loadHTMLFile($url);

libxml_clear_errors();

$xPath = new DOMXPath($dom);

//起作用的语句

$trs = $xPath->query('//li/a/text()|//tr/td');

//输出结果

foreach($trs as $tr) {

$str= $tr->nodeValue;

if(strlen($str)>6){

$str = array_pop( explode(' ', $str));

}

echo $str;

break;

}

?>

你去phpfiddle 试一下吧, 还行. 做这种工作, xpath方便点.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值