翼度科技»论坛 编程开发 python 查看内容

【爬虫案例】用Python爬取百度热搜榜数据!

3

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
一、爬取目标

您好,我是@马哥python说,一名10年程序猿。
本次爬取的目标是:百度热搜榜

分别爬取每条热搜的:
热搜标题、热搜排名、热搜指数、描述、链接地址。
下面,对页面进行分析。
经过分析,此页面有XHR链接,可以针对接口进行爬取。
打开Chrome浏览器,按F12进入开发者模式,依次点击:

  • 点击Network,选择网络
  • 点击XHR,选择XHR请求
  • 选择目标链接地址
  • 击Preview,选择预览
  • 查看返回数据
操作过程,如下图所示:

二、编写爬虫代码

首先,导入需要用到的库:
  1. import requests  # 发送请求
  2. import pandas as pd  # 存入excel数据
复制代码
定义一个百度热搜榜接口地址:
  1. # 百度热搜榜地址
  2. url = 'https://top.baidu.com/api/board?platform=wise&tab=realtime'
复制代码
构造一个请求头,伪装爬虫:
  1. # 构造请求头
  2. header = {
  3.         'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Mobile Safari/537.36',
  4.         'Host': 'top.baidu.com',
  5.         'Accept': 'application/json, text/plain, */*',
  6.         'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
  7.         'Accept-Encoding': 'gzip, deflate, br',
  8.         'Referer': 'https://top.baidu.com/board?tab=novel',
  9. }
复制代码
向百度页面发送requests请求:
  1. # 发送请求
  2. r = requests.get(url, header)
复制代码
返回的数据是json格式的,直接用r.json()接收:
  1. # 用json格式接收请求数据
  2. json_data = r.json()
复制代码
这里,需要注意的是,页面上有2种热搜:
百度热搜榜最上面一条是置顶热搜,下面从1到30是普通热搜,接口返回的数据也是区分开的:

所以,爬虫代码需要分开处理逻辑:
置顶热搜:
  1. # 爬取置顶热搜
  2. top_content_list = json_data['data']['cards'][0]['topContent']
复制代码
普通热搜:
  1. # 爬取普通热搜
  2. content_list = json_data['data']['cards'][0]['content']
复制代码
然后再分别进行json解析,对应的字段(标题、排名、热搜指数、描述、链接地址)。
最后,保存结果数据到excel即可。
  1. df = pd.DataFrame(  # 拼装爬取到的数据为DataFrame
  2.         {
  3.                 '热搜标题': title_list,
  4.                 '热搜排名': order_list,
  5.                 '热搜指数': score_list,
  6.                 '描述': desc_list,
  7.                 '链接地址': url_list
  8.         }
  9. )
  10. df.to_excel('百度热搜榜.xlsx', index=False)  # 保存结果数据
复制代码
最后,查看一下爬取到的数据:

一共31条数据(1条置顶热搜+30条普通热搜)。
每条数据包含:热搜标题、热搜排名、热搜指数、描述、链接地址。
三、同步视频讲解

讲解视频:https://www.zhihu.com/zvideo/1490668062617161728
四、完整源码

get完整源码:【爬虫案例】用Python爬取百度热搜榜数据!
我是@马哥python说,持续分享python源码干货中!

来源:https://www.cnblogs.com/mashukui/p/17545998.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具