一、爬取目标

您好,我是@马哥python说,一名10年程序猿。

本次爬取的目标是:百度热搜榜

分别爬取每条热搜的:

热搜标题、热搜排名、热搜指数、描述、链接地址。

下面,对页面进行分析。

经过分析,此页面有XHR链接,可以针对接口进行爬取。

打开Chrome浏览器,按F12进入开发者模式,依次点击:

  1. 点击Network,选择网络
  2. 点击XHR,选择XHR请求
  3. 选择目标链接地址
  4. 击Preview,选择预览
  5. 查看返回数据

操作过程,如下图所示:

二、编写爬虫代码

首先,导入需要用到的库:

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爬取百度热搜榜数据!的更多相关文章

  1. BeautifulSoup爬取微博热搜榜

    获取url 设定请求头 requests发出get请求 实例化BeautifulSoup对象 BeautifulSoup提取数据 import requests 2 from bs4 import B ...

  2. Python爬取微博热搜以及链接

    基本操作,不再详述 直接贴源码(根据当前时间创建文件): import requests from bs4 import BeautifulSoup import time def input_to_ ...

  3. nodejs实现定时爬取微博热搜

    The summer is coming " 我知道,那些夏天,就像青春一样回不来. - 宋冬野 青春是回不来了,倒是要准备渡过在西安的第三个夏天了. 废话 我发现,自己对 coding 这 ...

  4. Python爬虫实战二之爬取百度贴吧帖子

    大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不 ...

  5. 转 Python爬虫实战二之爬取百度贴吧帖子

    静觅 » Python爬虫实战二之爬取百度贴吧帖子 大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 ...

  6. python网络爬虫第三弹(<爬取get请求的页面数据>)

    一.urllib库 urllib是python自带的一个用于爬虫的库,其主要作用就是通过代码模拟浏览器发送请求,其常被用到的子模块在 python3中的为urllib.request 和 urllib ...

  7. Python开发简单爬虫(二)---爬取百度百科页面数据

    一.开发爬虫的步骤 1.确定目标抓取策略: 打开目标页面,通过右键审查元素确定网页的url格式.数据格式.和网页编码形式. ①先看url的格式, F12观察一下链接的形式;② 再看目标文本信息的标签格 ...

  8. 爬虫实战(一) 用Python爬取百度百科

    最近博主遇到这样一个需求:当用户输入一个词语时,返回这个词语的解释 我的第一个想法是做一个数据库,把常用的词语和词语的解释放到数据库里面,当用户查询时直接读取数据库结果 但是自己又没有心思做这样一个数 ...

  9. Python——爬取百度百科关键词1000个相关网页

    Python简单爬虫——爬取百度百科关键词1000个相关网页——标题和简介 网站爬虫由浅入深:慢慢来 分析: 链接的URL分析: 数据格式: 爬虫基本架构模型: 本爬虫架构: 源代码: # codin ...

  10. 爬虫系列(1)-----python爬取猫眼电影top100榜

    对于Python初学者来说,爬虫技能是应该是最好入门,也是最能够有让自己有成就感的,今天在整理代码时,整理了一下之前自己学习爬虫的一些代码,今天先上一个简单的例子,手把手教你入门Python爬虫,爬取 ...

随机推荐

  1. Python字典遍历

    1 def dict_test(): 2 #初始化字典 3 dict= {"a1":"1","a2":"2"," ...

  2. vector优化

    C++的stdvector使用优化 #include<iostream> #include<vector> using namespace std; class Vectex ...

  3. #背包#AT2037 [ARC060A] 高橋君とカード / Tak and Cards

    题目 有一个长度为\(n\)的数组\(a\),选择若干个数使它们的平均数为\(A\),问共有多少种方案 分析 设\(dp[i][j]\)表示选择\(i\)个数总和为\(j\)的方案数,那么答案就是\( ...

  4. #莫比乌斯反演,整除分块,欧拉定理#U137539 虚伪的最小公倍数

    题目 \[\large\prod_{i_1=1}^n\prod_{i_2=1}^n\dots\prod_{i_k=1}^n\frac{i_1*i_2*\dots*i_k}{gcd(i_1,i_2,\d ...

  5. JDK14的新特性:JFR,JMC和JFR事件流

    目录 简介 JFR JMC 创建JFR 分析JFR JFR事件 JFR事件流 总结 JDK 14的新特性:JFR,JMC和JFR事件流 简介 Java Flight Recorder(JFR)是JVM ...

  6. [IOI2000]邮局 题解

    简要题意 线段上有 \(V\) 个村庄,现在要建 \(P\) 个邮局,使每个村庄到最近的邮局的距离之和最小. 50分做法 设\(dp[i][j]\) 表示第一个村庄到第 \(i\) 个村庄,建了 \( ...

  7. Pandas选择与索引

    Series和DataFrame对象与Numpy数组和标准Python字典的数据索引和选择模式一样. 字典形式选择和索引 Series In [1]: import pandas as pd In [ ...

  8. 在python中通过面向对象方式,实现烤地瓜案例

    例子:烤地瓜,不同时间,反馈不同状态,并给不同状态地瓜加入不同味道 烤地瓜时间 0-3分钟,生的 4-7分钟,半生不熟的 8-12分钟,熟了 12分钟以上,已烤熟,糊了 用户可以按自己的意思添加调料 ...

  9. Device Partner平台合作伙伴认证和数据安全保护

     Device Partner平台是面向AIoT产业链伙伴的一站式服务平台,伙伴可以通过平台获取最新的产品.服务与解决方案,实现智能硬件产品的开发.认证.量产和推广等全生命周期的管理,加入Harmon ...

  10. 开发指导—利用组件&插值器动画实现HarmonyOS动效

    一. 组件动画 在组件上创建和运行动画的快捷方式.具体用法请参考通用方法. 获取动画对象 通过调用animate方法获得animation对象,animation对象支持动画属性.动画方法和动画事件. ...