文章参考知乎大佬 马哥python说 的文章:【爬虫案例】用Python爬取百度热搜榜数据!
爬取目标
百度热搜榜 → https://top.baidu.com/board?tab=realtime
分别爬取每条热搜的:
热搜标题、热搜简介、热度变化、热度值、热度标签、标签图片、热搜图片和链接地址
并输出为Json格式
由于参考文章已经分析出热搜榜地址,所以就不再另外抓取,直接使用即可。
不懂怎么抓取,想要学习的请看文章顶部参考文章!
由于使用是PHP,且输出内容格式为Json,因此我们需要先定义一个函数,让页面标准化输出Json。
这里我借鉴目前正在使用的 API接口平台 的系统框架的输出标准。
由于上面这段代码标准化输出中包含执行时间和客户端ip,因此我们还需要下面一段代码:
最后再加一个Curl函数用于爬取内容即可:
以上就是前期的准备工作。
接着向百度提交Request请求:
返回的数据是json格式的,需要解析数据:
通过查看返回数据,可以看到内容是在cards数组下的,因此我们需要先提取该数组的内容:
因为百度热搜目前有两种,最上面一条是置顶热搜,下面30条是普通热搜,接口返回的数据也是区分开的,因此我们也需要分开处理:
1.首先按照百度热搜请求返回的数据顺序,先取出30条普通热搜并输出:
2.提取出置顶热搜并输出:
3.提取出更新时间和热搜类型并输出:
4.整合数据,并通过函数使其输出标准化Json数据即可:
最后,我们查看一下爬取到并正常输出的数据:
一共31条数据(1条置顶热搜 + 30条普通热搜)。
由于内容太长,没有在文章中显示,其中:
content中的内容为30条普通热搜,topContent中的内容为置顶热搜