使用PHP的curl爬取百度搜索页相关搜索词

3 篇文章 0 订阅

使用PHP获取百度搜索的第一个相关搜索词

详细代码如下

$key_word = urlencode('王者荣耀');//需要对关键词进行url解析,否者部分带字符的标题会返回空
$url = 'https://www.baidu.com/s?ie=UTF-8&wd='.$key_word;

$res = curl_request($url);

$reach_word = substr($res,strpos($res, '<div id="rs"><div class="tt">相关搜索'),strpos($res, '<div id="page" >')-strpos($res, '<div id="rs"><div class="tt">相关搜索') );//截取需要的内容

preg_match('/<a.*?">(.*?)<\/a>/', $reach_word,$match);//正则匹配第一个搜索词
$reach_word = @$match[1];



//curl获取百度内容
function curl_request($url, $data=null, $method='get', $https=true){
    $ch = curl_init();//初始化
    curl_setopt($ch, CURLOPT_URL, $url);//访问的URL
    curl_setopt($ch, CURLOPT_HEADER, false);//设置不需要头信息
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//只获取页面内容,但不输出
    if($https){
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//https请求 不验证证书 
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);//https请求 不验证HOST
    }
    curl_setopt($ch,CURLOPT_ENCODING,'gzip');//百度返回的内容进行了gzip压缩,需要用这个设置解析
    //curl模拟头部信息
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
		    'Accept: */*',
			'Accept-Encoding: gzip, deflate, br',
			'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8',
			'Connection: keep-alive',
			'Host: www.baidu.com',
			'is_referer: https://www.baidu.com/',
			'is_xhr: 1',
			'Referer: https://www.baidu.com/',
			'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
			'X-Requested-With: XMLHttpRequest',
		));
    if($method == 'post'){
            curl_setopt($ch, CURLOPT_POST, true);//请求方式为post请求
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//请求数据
    }
    $result = curl_exec($ch);//执行请求
    curl_close($ch);//关闭curl,释放资源
    $result = mb_convert_encoding($result, 'utf-8', 'GBK,UTF-8,ASCII,gb2312');//百度默认编码是gb2312 这个设置转化为utf8编码
    return $result;
}

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 PHPcURL 库来模拟 HTTP 请求,抓取百度搜索结果面,并使用 PHP 的正则表达式来匹配面中的相关搜索词。 以下是一个简单的 PHP 抓取百度搜索结果面的示例代码: ```php <?php // 设置要搜索的关键字 $keyword = 'PHP'; // 构造搜索结果面的 URL $url = 'https://www.baidu.com/s?wd=' . urlencode($keyword); // 初始化 cURL $ch = curl_init(); // 设置 cURL 的选项 curl_setopt($ch, CURLOPT_URL, $url); // 设置要请求的 URL curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 设置返回结果而不是直接输出到屏幕上 // 执行 HTTP 请求并获取返回结果 $result = curl_exec($ch); // 关闭 cURL curl_close($ch); // 使用正则表达式匹配面中的相关搜索词,并存储到数组中 $related_keywords = array(); preg_match_all('/<th>(.*?)<\/th>/i', $result, $matches); foreach ($matches[1] as $match) { $related_keywords[] = $match; } // 输出相关搜索词 var_dump($related_keywords); ?> ``` 这段代码会输出类似以下的结果: ``` array(10) { [0]=> string(9) "PHP教程" [1]=> string(9) "PHP开发" [2]=> string(9) "PHP函数" [3]=> string(9) "PHP框架" [4]=> string(12) "PHP面试题" [5]=> string(9) "PHP在线" [6]=> string(9) "PHP手册" [7]=> string(9) "PHP扩展" [8]=> string(9) "PHP安装" [9]=> string(9) "PHP调试" } ``` 这些字符串就是百度搜索结果面中的相关搜索词。你可以将它们存储到数据库、文本文件或者其他数据结构中,以供后续使用

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值