[php]获取百度搜索结果

慕若曦   ·  9月前   ·   后端语言

@lovefc 的正则没等到,自己写咯……

<?php
/**
* 2018-03-07 取百度搜索结果
*/
header('Content-type: application/json');
$ch = curl_init();   
curl_setopt ($ch, CURLOPT_URL,'https://www.baidu.com/s?ie=utf-8&wd=site%3Abbs.kafan.cn%200x0000001d');    
curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36');  
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
$html = curl_exec($ch);
curl_close($ch);
preg_match_all("/<h3 class=\"t\">.*?<\/h3>/si",$html,$array_html);
unset($html);
foreach ($array_html[0] as $key => $value) {
	preg_match('@(?i)b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?«»“”‘’]))@', $value,$url);
	$url = get_headers($url[0], TRUE);
	$array[$key]=["title"=>strip_tags($value),"url"=>$url['Location']];
}
print_r(json_encode($array));
?>

因为取到的url是百度加密后的,所以用get_headers()去取真实地址,使得整体效率下降了……不知道大神们有啥好的解决方法不

1 条回复   |  直到 9月前 | 339 次浏览
登录后才可发表内容