Python 分析样例|数据采集案例:微博热搜榜采集

2023-10-22 23:20

本文主要是介绍Python 分析样例|数据采集案例:微博热搜榜采集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

实现目标

本案例通过图文详细介绍网络请求和解析的方法,其目标实现的需求为:通过网络请求,获取微博热搜榜中的前50条热搜的关键词,并将结果打印到控制台中。

实现过程

总体来说,数据采集爬虫的实现过程包括如下步骤:

  • 确定数据所在的Url
  • 执行网页请求并解决请求中出现的问题
  • 解析网页,获取格式化数据
  • 存储数据(当前案例中不需要)

下面我们按着以上步骤来依次完成。

确定数据所在Url

打开微博热搜榜,即Url为:https://s.weibo.com/top/summary

在这里插入图片描述

首先,我们需要判断目标数据是存在于页面上,还是通过Ajax加载的。我们可以在浏览器(建议使用Chrome浏览器)中右键,选择“查看网页源代码”。

在这里插入图片描述

此时浏览器会打开新的页面,其Url(网页地址)前增加了view-source部分,在网页中显示的关键词就是当前网页的源代码。

在这里插入图片描述

我们使用快捷键Ctrl+F打开搜索框,在网页源代码中搜索热搜榜页面上显示的文字,例如热搜排名第一的”北宋古墓发现过仙桥“,可以发现网页源代码中存在该关键词,这就说明热搜榜是直接加载在页面中,而不是通过Ajax加载的,此时我们只要直接请求网页的Url即可获得热搜榜数据。

网页请求

下面我们使用requests模块执行网页请求,并打印请求的结果,其代码如下:

import requestsif __name__ == "__main__":response = requests.get("https://s.weibo.com/top/summary")print(response.content.decode())

在打印出的内容中,我们再一次通过搜索找到了”北宋古墓发现过仙桥“,说明我们的请求成功获得了热搜榜数据,并没有出现任何问题。

网页解析

在这里插入图片描述

再次回到浏览器,右键,选择“检查”,打开浏览器控制台(或直接使用快捷键F12也可以打开控制台)。

在这里插入图片描述

选中元素选取工具。

在这里插入图片描述

在元素选取模式下(元素选取工具的小箭头为蓝色),点击我们需要采集的信息。

在这里插入图片描述

此时,浏览器控制台将定位到目标信息所在的标签。

在这里插入图片描述

我们在该标签上右键,选择“Copy“,再选择”Copy Selector“,复制标签的CSS Selector路径,这个路径是用来定位到当前标签的。例如,第一条热搜关键词所在标签的CSS Selector为:

#pl_top_realtimehot > table > tbody > tr:nth-child(2) > td.td-02 > a

其中#pl_top_realtimehot表示ID为pl_top_realtimehot的标签,即下图中第一行的div标签;> table表示当前标签下一层的table标签,即下图中第二行的table标签;tr:nth-child(2)表示当前标签下的第二个tr标签,即下图中被选中的tr标签。

在这里插入图片描述

通过对于网络结构的观察,我们可以发现每条热搜都是tbody标签下的一个独立的tr标签;因此,要同时获取不同热搜的关键词,我们只需要不再限制指定的tr标签即可,即将CSS selector路径中tr:nth-child(2)中的:nth-child(2)删除即可。

#pl_top_realtimehot > table > tbody > tr > td.td-02 > a

在浏览器控制台的Elements标签中,使用Ctrl+F快捷键打开搜索框,在搜索框中搜索修改后的CSS Selector路径,可以得到51个结果,说明修改后的CSS Selector已经可以同时匹配所有热搜的关键词了。

在这里插入图片描述

下面我们使用Python的第三方模块——BeautifulSoup模块(pip安装命令 : pip install BeautifulSoup4)实现解析,包含请求的代码如下:

import requests
from bs4 import BeautifulSoupif __name__ == "__main__":response = requests.get("https://s.weibo.com/top/summary")bs = BeautifulSoup(response.content.decode(), 'lxml')for keyword_label in bs.select("#pl_top_realtimehot > table > tbody > tr > td.td-02 > a"):print(keyword_label.text)

运行结果已经可以将所有热搜打印到控制台中,实现了当前需求。

10个关键词把握2020中国经济走势
北宋古墓发现过仙桥
香港各界发起联署支持国家安全立法
马路惊现非洲雄狮
澳门所有大中小学升国旗唱国歌全覆盖
......

本系列案例采集的一切数据仅可用于学习、研究用途!

对于案例需求的说明 : 因此微博热搜榜是实时更新的,所以一个相对完整的采集需求如下:每3分钟采集一次微博热搜榜中的前49条热搜(忽略第3条的广告信息),并将结果存储到数据库中,数据库应至少包含采集时间、排名(rank)、关键词(keyword)、热度(hot)、类型(type)等字段。完整案例将在后续内容中讲解。

对于案例讲解的说明 : 作为第一个案例,本文通过图文详细讲解了每一个步骤,后续的案例将以讲解思路为主。

这篇关于Python 分析样例|数据采集案例:微博热搜榜采集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/264228

相关文章

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

Redis中的有序集合zset从使用到原理分析

《Redis中的有序集合zset从使用到原理分析》Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占... 目录开篇:排行榜背后的秘密一、zset的基本使用1.1 常用命令1.2 Java客户端示例二、zse

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

Redis中的AOF原理及分析

《Redis中的AOF原理及分析》Redis的AOF通过记录所有写操作命令实现持久化,支持always/everysec/no三种同步策略,重写机制优化文件体积,与RDB结合可平衡数据安全与恢复效率... 目录开篇:从日记本到AOF一、AOF的基本执行流程1. 命令执行与记录2. AOF重写机制二、AOF的