热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP实现抓取百度搜索结果,并分析数据结构

百度的搜索引擎有反爬虫机制,我先直接用guzzle试试水。代码如下...

推荐:《PHP视频教程》

PHP网络爬虫实践:抓取百度搜索结果,并分析数据结构

百度的搜索引擎有反爬虫机制,我先直接用guzzle试试水。代码如下:

 true]);
$ql = $client->request('GET', 'https://www.baidu.com', [
    'COOKIEs' => $jar
]);
if($ql->getStatusCode()!=200){
    echo '网站状态不正常';die;
}
echo  $ql->getBody();

百度直接拦截了,进了跳转页面,我试试加个浏览器头文件,再试试。

修改后的header如下:

$ql = $client->request('GET', 'https://www.baidu.com', [
    'COOKIEs' => $jar,
    'headers' => [
    'Accept-Encoding' => 'gzip, deflate, br',
    'Accept'     => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
    'Accept-Language'      => 'zh-CN,zh;q=0.9,en;q=0.8',
    'Cache-Control'      => 'no-cache',
    'Connection'      => 'keep-alive',
    'User-Agent'      => 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
]
]);

我测试了下,网站打开了。

我们继续,输入关键词,并搜索,结果发现被安全拦截了,所以我感觉直接用GuzzleHttp搞不动,于是我继续我的神器:jaeger/querylist和jaeger/querylist-puppeteer。

安装步骤:

1.安装依赖

在这之前,要先启用php的proc_open函数,否则无法安装完整

composer install jaeger/querylist
composer install jaeger/querylist-puppeteer

2.安装nodejs

yum install nodejs

3.安装npm

4.安装@nesk/puphpeteer

npm install @nesk/puphpeteer

5.PHP启用proc_open

代码如下:

use(Chrome::class);
 $ql->chrome(function ($page,$browser) {
    $page->goto('https://www.baidu.com');
    // 这里故意设置一个很长的延长时间,让你可以看到chrome浏览器的启动
    sleep(3);
    //输入关键词
    $wd = '简庆旺博客';
    $page->type("input[id='kw']",$wd);
    sleep(1);
    //点击搜索
    $page->click("input[type='submit']");
    //等待搜索结果
    sleep(3);
    //获取结果
    $html = $page->content();
    //用jquery选择器抽取结果
    $rules = array(
        'title'=>['#content_left h3 a','text'],//标题
        'url'=>['#content_left h3 a','href'],//跳转网址
        'description'=>['div .c-abstract','text'],//描述
    );
    $ql = QueryList::html($html);
    $rt = $ql->rules($rules)->query()->getData();
    //如果有需要,可以把$rt入库,以及做其他操作
    sleep(10);
    $browser->close();
    // 返回值一定要是页面的HTML内容
    return $html;
},[
    'headless' => false, // 启动可视化Chrome浏览器,方便调试
    'devtools' => false, // 打开浏览器的开发者工具
])->find('title')->text();

$rt是我的结果集合,打印下,如下

以上就是PHP实现抓取百度搜索结果,并分析数据结构的详细内容,更多请关注 第一PHP社区 其它相关文章!


推荐阅读
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了常用#免费%代理IP库&整理*收藏——实时@更新(大概)相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • 本文介绍了互联网思维中的三个段子,涵盖了餐饮行业、淘品牌和创业企业的案例。通过这些案例,探讨了互联网思维的九大分类和十九条法则。其中包括雕爷牛腩餐厅的成功经验,三只松鼠淘品牌的包装策略以及一家创业企业的销售额增长情况。这些案例展示了互联网思维在不同领域的应用和成功之道。 ... [详细]
  • React 小白初入门
    推荐学习:React官方文档:https:react.docschina.orgReact菜鸟教程:https:www.runoob.c ... [详细]
  • 文章目录简介HTTP请求过程HTTP状态码含义HTTP头部信息Cookie状态管理HTTP请求方式简介HTTP协议(超文本传输协议)是用于从WWW服务 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • Netty源代码分析服务器端启动ServerBootstrap初始化
    本文主要分析了Netty源代码中服务器端启动的过程,包括ServerBootstrap的初始化和相关参数的设置。通过分析NioEventLoopGroup、NioServerSocketChannel、ChannelOption.SO_BACKLOG等关键组件和选项的作用,深入理解Netty服务器端的启动过程。同时,还介绍了LoggingHandler的作用和使用方法,帮助读者更好地理解Netty源代码。 ... [详细]
  • RN即ReactNative基于React框架针对移动端的跨平台框架,在学习RN前建议最好熟悉下html,css,js,当然如果比较急,那就直接上手吧,毕竟用学习前面基础的时间,R ... [详细]
  • css元素可拖动,如何使用CSS禁止元素拖拽?
    一、用户行为三剑客以下3个CSS属性:user-select属性可以设置是否允许用户选择页面中的图文内容;user-modify属性可以设置是否允许输入 ... [详细]
  • mac os Spotlight使用技巧:直接在谷歌搜索
    一、背景想直接借助spotlight进行google。当然现在有现成的第三方可以做到,不想安装第三方二、方法唤起Spotlight,输入想要goo ... [详细]
  • 学习一门编程语言,除了语法,最重要的是学习解决问题。很多时候单凭自己的能力确实无法做到完美解决,所以无论是搜索引擎、社区、文档还是博客&# ... [详细]
  • pyecharts 介绍
    一、pyecharts介绍ECharts,一个使用JavaScript实现的开源可视化库,可以流畅的运行在PC和移动设备上,兼容当前绝大部 ... [详细]
author-avatar
空心悟心
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有