【爬虫案例】用Python爬取百度热搜榜数据!
一、爬取目标
您好,我是@马哥python说,一名10年程序猿。
本次爬取的目标是:百度热搜榜

分别爬取每条热搜的:
热搜标题、热搜排名、热搜指数、描述、链接地址。
下面,对页面进行分析。
经过分析,此页面有XHR链接,可以针对接口进行爬取。
打开Chrome浏览器,按F12进入开发者模式,依次点击:
- 点击Network,选择网络
- 点击XHR,选择XHR请求
- 选择目标链接地址
- 击Preview,选择预览
- 查看返回数据
操作过程,如下图所示:

二、编写爬虫代码
首先,导入需要用到的库:
import requests # 发送请求
import pandas as pd # 存入excel数据
定义一个百度热搜榜接口地址:
# 百度热搜榜地址
url = 'https://top.baidu.com/api/board?platform=wise&tab=realtime'
构造一个请求头,伪装爬虫:
# 构造请求头
header = {
'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',
'Host': 'top.baidu.com',
'Accept': 'application/json, text/plain, */*',
'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
'Accept-Encoding': 'gzip, deflate, br',
'Referer': 'https://top.baidu.com/board?tab=novel',
}
向百度页面发送requests请求:
# 发送请求
r = requests.get(url, header)
返回的数据是json格式的,直接用r.json()接收:
# 用json格式接收请求数据
json_data = r.json()
这里,需要注意的是,页面上有2种热搜:
百度热搜榜最上面一条是置顶热搜,下面从1到30是普通热搜,接口返回的数据也是区分开的:

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

一共31条数据(1条置顶热搜+30条普通热搜)。
每条数据包含:热搜标题、热搜排名、热搜指数、描述、链接地址。
三、同步视频讲解
讲解视频:https://www.zhihu.com/zvideo/1490668062617161728
四、完整源码
get完整源码:【爬虫案例】用Python爬取百度热搜榜数据!
我是@马哥python说,持续分享python源码干货中!
【爬虫案例】用Python爬取百度热搜榜数据!的更多相关文章
- BeautifulSoup爬取微博热搜榜
获取url 设定请求头 requests发出get请求 实例化BeautifulSoup对象 BeautifulSoup提取数据 import requests 2 from bs4 import B ...
- Python爬取微博热搜以及链接
基本操作,不再详述 直接贴源码(根据当前时间创建文件): import requests from bs4 import BeautifulSoup import time def input_to_ ...
- nodejs实现定时爬取微博热搜
The summer is coming " 我知道,那些夏天,就像青春一样回不来. - 宋冬野 青春是回不来了,倒是要准备渡过在西安的第三个夏天了. 废话 我发现,自己对 coding 这 ...
- Python爬虫实战二之爬取百度贴吧帖子
大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不 ...
- 转 Python爬虫实战二之爬取百度贴吧帖子
静觅 » Python爬虫实战二之爬取百度贴吧帖子 大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 ...
- python网络爬虫第三弹(<爬取get请求的页面数据>)
一.urllib库 urllib是python自带的一个用于爬虫的库,其主要作用就是通过代码模拟浏览器发送请求,其常被用到的子模块在 python3中的为urllib.request 和 urllib ...
- Python开发简单爬虫(二)---爬取百度百科页面数据
一.开发爬虫的步骤 1.确定目标抓取策略: 打开目标页面,通过右键审查元素确定网页的url格式.数据格式.和网页编码形式. ①先看url的格式, F12观察一下链接的形式;② 再看目标文本信息的标签格 ...
- 爬虫实战(一) 用Python爬取百度百科
最近博主遇到这样一个需求:当用户输入一个词语时,返回这个词语的解释 我的第一个想法是做一个数据库,把常用的词语和词语的解释放到数据库里面,当用户查询时直接读取数据库结果 但是自己又没有心思做这样一个数 ...
- Python——爬取百度百科关键词1000个相关网页
Python简单爬虫——爬取百度百科关键词1000个相关网页——标题和简介 网站爬虫由浅入深:慢慢来 分析: 链接的URL分析: 数据格式: 爬虫基本架构模型: 本爬虫架构: 源代码: # codin ...
- 爬虫系列(1)-----python爬取猫眼电影top100榜
对于Python初学者来说,爬虫技能是应该是最好入门,也是最能够有让自己有成就感的,今天在整理代码时,整理了一下之前自己学习爬虫的一些代码,今天先上一个简单的例子,手把手教你入门Python爬虫,爬取 ...
随机推荐
- 使用Razor模板动态生成代码
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- X-Y问题
什么是X-Y问题 X-Y问题就是有人想解决问题X,他觉得Y可能是解决X的方法但不知道Y怎么做:在我们的工作中,需求方给出的来的是Y,而软件工程师不知道需要解决的X是什么. 我理解的X-Y问题是没有找到 ...
- #SPFA,动态规划#洛谷 1772 [ZJOI2006]物流运输
题目 分析 改变航线可以通过费用提前计算实现, 这样就不用增加次数这一维,也没有必要, 设\(dp[i]\)表示前\(i\)天的总费用 那么\(dp[i]=\min\{dp[j-1]+(i-j+1)* ...
- #博弈论#Poj 1740 A New Stone Game
题目 两个人轮流操作,每次选择一个非空石堆后, 选择扔掉至少一个石子后可将剩余石子任意移动至其余非空石堆, 也可以不移,无石子可取者为败,问先手是否必胜 分析 感性理解一下,如果有两堆个数相同的石子, ...
- OpenHarmony父子组件双项同步使用:@Link装饰器
子组件中被@Link装饰的变量与其父组件中对应的数据源建立双向数据绑定. 说明: 从API version 9开始,该装饰器支持在ArkTS卡片中使用. 概述 @Link装饰的变量与其父组件中的数 ...
- OpenHarmony开发之MQTT讲解
相信MQTT这个名称大家都不陌生,物联网的开发必然会遇到MQTT相关知识的应用.那么什么是MQTT?它有什么特点?它能解决什么问题?它是如何工作的?OpenAtom OpenHarmony(以下简 ...
- 记一次 .NET某管理局检测系统 内存暴涨分析
一:背景 1. 讲故事 前些天有位朋友微信找到我,说他们的WPF程序有内存泄漏的情况,让我帮忙看下怎么回事?并且dump也抓到了,网上关于程序内存泄漏,内存暴涨的文章不计其数,看样子这个dump不是很 ...
- unknow or unsupported command install
错误原因: 今天使用pip下载labelimg时,出现了"unknow or unsupported command install"的错误,这是由于电脑有多个pip文件路径所导致 ...
- HarmonyOS应用开发—资源分类与访问
应用开发过程中,经常需要用到颜色.字体.间距.图片等资源,在不同的设备或配置中,这些资源的值可能不同. ● 应用资源:借助资源文件能力,开发者在应用中自定义资源,自行管理这些资源在不同的设备或配置中 ...
- Docker compose 部署 nginx+php
Docker compose 部署 nginx+php 拉取Docker镜像 docker pull nginx:1.21.6 docker pull php:7.4.28-fpm 创建docker- ...