基于Python的孔夫子旧书网热销书籍爬虫与可视化分析报告

ops/2024/9/18 12:51:53/ 标签: python, 爬虫, 信息可视化, 数据分析, pyecharts

摘要随着社会的不断发展,数据时代的到来,数据的背后是什么,数据有什么用,怎么用庞大的数据来呈现出数据的价值,让我们一起去揭开它神秘的面纱。

 以孔夫子旧书网热销书籍5本图书数据爬取为例,介绍网络爬虫的基本原理,Python环境的搭建,PyCharm request pyechart等的爬虫数据的运用,把获取到的数据进行清洗、整合,储存数据到MySQL,然后进行数据可视化的呈现,简单对呈现的图进行数据分析

1系统开发背景

1.1 背景

在大数据时代,人类社会的数据正以前所未有的速度增长。数据蕴含着巨大的价值,无论是对个人工作、生活,还是对企业未来的发展和创新商业模式,都有着很大的帮助。充分挖掘数据潜在价值,能帮助人们找到更合适的合作对象、更便宜的生活用品,也能帮助企业找到更好的细分市场,有针对性地为企业日后的发展提供数据支撑。数据让人们更好地掌握市场动向,更好地应对市场,产生新的合理的决策。

数据背后所隐藏的巨大商业价值正开始被越来越多的人所重视,那么数据从何而来?可以从网上找数据,但是人工提取数据效率太低,从经济角度也不可行。购买数据是一 个办法,但是目前公开交易的数据少之又少,很难与多样化的数据需求匹配。因此,对很多人和企业来说,如果想获取全面、有效、 准确的数据, 编写爬虫抓取数据是一种明智之选

1.2 目标及意义

目标:数据来源于孔夫子旧书网热销书籍官网的公开信息,爬取图书热销榜公示信息数据,主要包括书名、评论内容、评论数据、价格的信息。

意义:

  1. 指示热销榜图书评论条数的排名。
  2. 指示热销榜图书词频分析
  3. 指示热销榜图书评论数据分布
  4. 指导我们在看图书和理解书中内容的方法和建议。

2系统相关技术介绍

本文主要是基于python语法和其强大的库来实现系统的多种功能。

2.1 Python语言

  Python是一种计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。

  Python在设计上坚持了清晰划一的风格,这使得Python成为一门易读、易维护,并且被大量用户所欢迎的、用途广泛的语言。

2.2 request库

Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库,是网络爬虫中及其重要的组成成分。

2.3 BeautifulSoup

BeautifulSoup是用来从HTMLXML中提取数据的Python库。

对于不具备良好格式的 HTML 内容,lxml 提供了两个有用的包:lxml.html 模块和 BeautifulSoup 解析器。

2.4 pyecharts

echarts是一个使用 JavaScript 实现的开源可视化库,因为其着良好的交互性,精巧的图表设计,受到众多开发者青睐。Python 是一门富有表达力的语言,在数据处理方面很在行。当Python数据分析遇上echarts数据可视化相遇时,碰撞出了新的Python可视化库,于是Pyecharts诞生了。Echarts是百度开源的一个数据可视化JS库,Pyecharts 则是是一个用于生成 Echarts 图表的类库。使用Pyecharts时,我们可以使用Python来调用里面的API,因此Pyecharts使用起来更简单,绘图的效果更好,还能实现动态交互。

2.5 json

JSON 是存储和交换文本信息的语法,类似 XML。

JSON 比 XML 更小、更快,更易解析。

JSON 易于人阅读和编写。

C、Python、C++、Java、PHP、Go等编程语言都支持 JSON。

2.6 WordCloud库

wordcloud库,可以说是python非常优秀的词云展示第三方库。词云以词语为基本单位更加直观和艺术的展示文本。

wordcloud把词云当作一个对象,它可以将文本中词语出现的频率作为一个参数绘制词云,而词云的大小、颜色、形状等都是可以设定的。

2.7pymysql

 PyMySQL包包含一个纯Python MySQL客户端库。PyySQL的目标是对MySQL LDAP进行替换,并对CPython、PyPy和IrPython进行工作

2.8 jieba库

Jieba库作用:1、利用中文词库,分析汉字与汉字之间的关联几率

2、还有分析汉字词组的关联几率

3、还可以根据用户自定义的词组进行分析。是做词云图的关键。

3系统分析与设计

3.1 可行性分析

3.1.1 技术可行性分析

本人掌握python、sql等数据处理技术,并且熟练使用mySql数据库、pycharm集成开发环境,并且在互联网上比较容易获取找到相关技术文档,因此技术思路清晰。

3.1.2 数据可获得性分析

本文分析孔夫子旧书网热销榜图书数据,数据来源真实可靠而且可以轻松获取。

3.2 各模块设计

3.2.1 数据获取方法

数据集来源孔夫子旧书网热销榜图书数据,通过python中的bs4和json获取html中的数据。

3.2.2 数据预处理设计

对于爬取数据量不大的内容可以使用pymysql库来存储数据,将其存为sql文件格式,再对数据进行数据预处理,也可通过代码进行数据预处理。

3.2.3 数据分析思路设计

通过对孔夫子旧书网热销榜图书数据爬取字段分析,可提供的数据分析如下:

热销榜图书评论条数的排名分析。图书评论价格分析。热销榜图书词频分析。热销榜图书评论数据分布分析。

4.1.1数据获取

打开网页获取想要爬取的数据标签定位

4.1.2获取评论数据url

打开五本热销书籍链接可以知道,评论数据在开发者工具--网络--xhr中如下图可知,评论数据为post请求,所以post请求的构建是获取url的重点

4.1.3数据存储与清洗

在获取链接,爬取数据后,保存的为json格式数据,所以要对json格式的数据进行提取和清洗,使用json.loads方法,将json数据转换成字典类型,通过键值对提取里面的评论信息。

部分代码截图:

提取评论数据后,添加到数据库,清洗后的数据如下图

部分代码截图:

5.1词频图的数据分析

在做词云图之前,必须对先做词频分析,利用jieba库进行分词处理,去掉一些停用词和无用词,在进行词频统计。具体步骤如下:

  1. 统计词频并将相关数据封装入字典

先从数据库读取评论数据,存为txt格式,方便做jieba分词

  1. 统计好词频之后,我们要使用停用词和一些无意义的词语去掉,这样做出来的词云图才有意义,使用for循环去提取字典数据,在存为列表数据,部分代码如下:

最后生成了一个列表数据,这个词频的列表数据,就可以用来做词云图

6.1 数据可视化

图书评论价格分析。从数据库中查询图书价格数据,然后通过fetchall函数,转换成元组数据,在通过for循环,把元组输出成列表,在调用pyecharts的bar模块,将列表数据以柱形图的形式呈现出来。结果如下图:

部分代码如下:

热销榜图书词频分析。经过词频数据分析处理后的列表数据,在调用pyecharts的wordcloud模块,将列表数据以词云图的形式呈现出来,字体越大,颜色越深的代表词频越高,如下图:

部分代码如下:

热销榜图书评论数据分布分析。从数据库中查询图书评论数据,然后通过fetchall函数,转换成元组数据,在通过for循环,把元组输出成列表,在调用pyechartsRadar

模块,将列表数据以雷达图的形式呈现出来,每一个坐标点对应一个方面的数据,能从不同的角度去分析评论数据的分布特性,效果如下图:

部分代码如下:

最后在将三个图进行结合一起,用pyecharts的page进行实例化,将三图在一个HTML页面上展示,体现数据的可读性和美观度。效果如下:


http://www.ppmy.cn/ops/94240.html

相关文章

Web大学生网页作业成品——美食企业曹氏鸭脖介绍网站设计与实现(HTML+CSS+JS)(4个页面)

🎉🎉🎉 常见网页设计作业题材有**汽车、环保、明星、文化、国家、抗疫、景点、人物、体育、植物、公益、图书、节日、游戏、商城、旅游、家乡、学校、电影、动漫、非遗、动物、个人、企业、美食、婚纱、其他**等网页设计题目, 可满足大学生网…

代码随想录算法训练营day44|动态规划part11

第一题:1143. Longest Common Subsequence /*二维dp数组 */ class Solution {public int longestCommonSubsequence(String text1, String text2) {// char[] char1 text1.toCharArray();// char[] char2 text2.toCharArray();// 可以在一開始的時候就先把text1,…

高级Web安全技术(第二篇)

我们继续第二篇,继续深入了解web的安全 一、概述 在Web应用的开发与部署中,安全问题不仅是技术挑战,更是对系统整体架构的考验。本篇文章将继续深入探讨高级Web安全技术,重点关注API安全的最佳实践、OAuth的安全实施以及安全编码…

HTML----我的心里只有你(纯css源代码)

实现结果&#xff08;鼠标放到心上心会展开&#xff09; 代码实现 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>练习时长两年半</title><style>img {--s: 300px; /* image size */wid…

GitHub的详细介绍

GitHub是一个面向开源及私有软件项目的托管平台&#xff0c;它建立在Git这个分布式版本控制系统之上&#xff0c;为开发者提供了在云端存储、管理和共享代码的便捷方式。以下是对GitHub的详细介绍&#xff1a; ### 一、GitHub的基本功能 1. **代码托管**&#xff1a;GitHub允…

数学建模--蒙特卡洛算法之电子管更换刀片寿命问题

目录 1.电子管问题重述 2.电子管问题分析 3.电子管问题求解 4.刀片问题重述 5.刀片问题分析 6.刀片问题求解 1.电子管问题重述 某设备上安装有4只型号规格完全相同的电子管&#xff0c;已知电子管寿命服从100&#xff5e;200h之间的均匀分布&#xff0e; 只要有一个电子管…

Debian系统安装Docker

Debian系统安装Docker 更新软件包索引安装必要的软件包以允许apt通过HTTPS使用仓库添加Docker的官方GPG密钥设置Docker的稳定仓库再次更新软件包索引安装Docker CE&#xff08;社区版&#xff09;验证Docker是否安装成功 更新软件包索引 sudo apt-get update安装必要的软件包以…

How do you implement OpenAI GPT-3 Api Client in PHP?

题意&#xff1a;如何在 PHP 中实现 OpenAI GPT-3 API 客户端&#xff1f; 问题背景&#xff1a; I need help understanding the vague instructions on https://packagist.org/packages/orhanerday/open-ai 我需要帮助来理解这些模糊的说明... I downloaded the package fr…

ECMAScript中的对象迭代:`Object.entries()`与`Object.values()`方法解析

在ECMAScript 2017&#xff08;ES8&#xff09;中&#xff0c;Object.entries()和Object.values()方法为JavaScript对象提供了新的迭代方式。这两种方法都用于遍历对象的属性&#xff0c;但它们返回的数据结构和使用场景有所不同。本文将详细探讨这两个方法的区别&#xff0c;并…

比特币8.12学习问题

疑问&#xff1a;什么是过滤&#xff0c;什么是offset 没有投钱的情况下&#xff0c;怎么用api 公式&#xff1a;单币分配金额 总资金 / 2/ offset/选币数量&#xff0c;其中2 表示多空 买入滑点&#xff08;Slippage&#xff09;是指在执行交易订单时&#xff0c;实际成交…

描述一下Spring Bean的生命周期

Spring Bean 生命周期 概念 解析类得到BeanDefinition如果有多个构造方法&#xff0c;则要推断构造方法确定好构造方法后&#xff0c;进行实例化得到一个对象对对象中的加了 Autowired注解的属性进行属性填充回调Aware方法&#xff0c;比如BeanNameAware&#xff0c;BeanFacto…

Spring面试题(三)

目录 十四、Spring框架中的Bean的作用域 十五、Spring 框架中的Bean的线程安全 十六、Spring 框架中的Bean生命周期 十七、Spring 框架如何解决循环依赖? 十八、Spring 框架中有哪些注解? 十九、Spring 框架中用到的设计模式 二十、Spring 框架中AOP的基本理解 二十一…

unity自动添加头部注释脚本

unity自动添加头部注释脚本&#xff0c;放在Assets目录自动生效 public class ScriptCreateInit : UnityEditor.AssetModificationProcessor {private static void OnWillCreateAsset(string path){path path.Replace(".meta", "");if (path.EndsWith(&qu…

DLMS/COSEM中的信息安全:安全密钥(中)续2

2.4.4证书扩展 2.4.4.1 综述 为X.509 v3证书定义的扩展提供了将附加属性与用户或公钥进行连接以及管理CA之间的关系的方法。证书中的每个扩展名都指定为关键&#xff08;TRUE&#xff09;或非关键&#xff08;FALSE&#xff09;。 扩展字段应根据所使用的证书类型完成&#xf…

SpringMVC快速入门

MVC模式 MVC&#xff08;Model-View-Controller&#xff09;模式是一种设计模式&#xff0c;用于分离应用程序的不同方面&#xff0c;以提高代码的组织性和可维护性。在Spring MVC框架中&#xff0c;MVC模式的作用是将应用程序的不同职责分开&#xff0c;从而简化开发和维护过…

计算机网络——运输层(进程之间的通信、运输层端口,UDP与TCP、TCP详解)

运输层协议概述 进程之间的通信 运输层向它上面的应用层提供通信服务。 当网络边缘部分的两台主机使用网络核心部分的功能进行端到端的通信时&#xff0c;都要使用协议栈中的运输层&#xff1b;而网络核心部分中的路由器在转发分组时只用到下三层的功能。 Q1&#xff1a;我们…

【物联网】(防水篇)电子产品如何做到IPX7级别的防水?

电子产品如何做到IPX7级别的防水&#xff1f; 要使电子产品达到 IPX7 级别的防水&#xff0c;通常需要以下几个方面的措施&#xff1a; 1. 密封设计&#xff1a; 在产品的外壳连接处、接口、按键等部位&#xff0c;采用高质量的密封材料&#xff0c;如橡胶垫圈、硅胶密封圈等…

编程-设计模式 29:前端控制器模式

设计模式 29&#xff1a;前端控制器模式 定义与目的 定义&#xff1a;前端控制器模式是一种用于Web应用程序的模式&#xff0c;它提供了一个统一的入口点来处理所有的客户端请求。前端控制器负责接收客户端的请求&#xff0c;并将请求转发给合适的处理程序。目的&#xff1a;…

Oracle(52)分区表有哪些类型?

分区表在Oracle数据库中主要分为以下几种类型&#xff1a; 范围分区&#xff08;Range Partitioning&#xff09;列表分区&#xff08;List Partitioning&#xff09;哈希分区&#xff08;Hash Partitioning&#xff09;组合分区&#xff08;Composite Partitioning&#xff0…

软件工程造价师习题练习 10

1.IFPUG功能点方法不适用于维护项目的工作量估算。 错误 正确 IFPUG功能点方法不仅适用于新开发项目&#xff0c;也适用于维护项目的工作量估算&#xff0c;包括新增、修改和删除现有系统的功能。 答案&#xff1a;错误 2.IFPUG功能点方法可以用于比较不同的软件项目的功能…