【python】分析当当网书籍价格、出版社、电子书版本占比数据
前言
嗨喽,大家好呀~这里是爱看美女的茜茜呐
又到了学Python时刻~
本次案例实现目标
书籍基本数据
实现可视化图表
书籍评论数据
评论可以实现词云图
最基本思路流程: <通用>
一. 数据来源分析
只有当你知道你想要数据内容, 是来自于哪里的时候, 才能通过代码请求得到数据
打开 F12 开发者工具进行抓包分析
通过关键字进行搜索查询 数据包是请求那个url地址
二. 代码实现步骤过程: 代码实现基本四大步骤
发送请求, 模拟浏览器对于url地址
<刚刚分析得到的url地址>发送请求
获取数据, 获取服务器返回响应数据
—> 开发者工具里面 response
解析数据, 提取我们想要的数据内容
—> 书籍基本信息
保存数据, 把数据内容保存到表格里面
代码展示
获取书籍详情信息
发送请求
url = f'http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-recent7-0-0-1-1'
# 代码模拟浏览器发送请求 ---> headers请求头 <可以复制粘贴>
headers = {# User-Agent 用户代理 表示浏览器基本身份标识'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
# 发送请求
response = requests.get(url=url, headers=headers)
解析数据
# 转换数据类型 ---> 可解析对象
selector = parsel.Selector(response.text)
# 第一次提取, 获取所有li标签
lis = selector.css('.bang_list_mode li') # 返回列表
# for循环遍历, 把列表里面的元素一个一个提取出来
for li in lis:title = li.css('.name a::attr(title)').get() # 标题/书名recommend = li.css('.tuijian::text').get().replace('推荐', '') # 推荐star = li.css('.star a::text').get().replace('条评论', '') # 评价author = li.css('div:nth-child(5) a:nth-child(1)::attr(title)').get() # 作者date = li.css('div:nth-child(6) span::text').get() # 出版日期press = li.css('div:nth-child(6) a::text').get() # 出版社price_r = li.css('.price .price_r::text').get() # 原价price_n = li.css('.price .price_n::text').get() # 售价price_e = li.css('.price_e span::text').get() # 电子书价格href = li.css('.name a::attr(href)').get() # 详情页dit = {'标题': title,'推荐': recommend,'评价': star,'作者': author,'出版日期': date,'出版社': press,'原价': price_r,'售价': price_n,'电子书价格': price_e,'详情页': href,}csv_writer.writerow(dit)print(dit)
保存数据
f = open('书籍.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['标题','推荐','评价','作者','出版日期','出版社','原价','售价','电子书价格','详情页',
])
# 写入表头
csv_writer.writeheader()
运行代码得到结果
可视化图表
书籍总体价格区间
pie1 = (Pie(init_opts=opts.InitOpts(theme='dark',width='1000px',height='600px')).add('', datas_pair_1, radius=['35%', '60%']).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{d}%")).set_global_opts(title_opts=opts.TitleOpts(title="当当网书籍\n\n原价价格区间", pos_left='center', pos_top='center',title_textstyle_opts=opts.TextStyleOpts(color='#F0F8FF', font_size=20, font_weight='bold'),)).set_colors(['#EF9050', '#3B7BA9', '#6FB27C', '#FFAF34', '#D8BFD8', '#00BFFF', '#7FFFAA'])
)
pie1.render_notebook()
pie1 = (Pie(init_opts=opts.InitOpts(theme='dark',width='1000px',height='600px')).add('', datas_pair_2, radius=['35%', '60%']).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{d}%")).set_global_opts(title_opts=opts.TitleOpts(title="当当网书籍\n\n售价价格区间", pos_left='center', pos_top='center',title_textstyle_opts=opts.TextStyleOpts(color='#F0F8FF', font_size=20, font_weight='bold'),)).set_colors(['#EF9050', '#3B7BA9', '#6FB27C', '#FFAF34', '#D8BFD8', '#00BFFF', '#7FFFAA'])
)
pie1.render_notebook()
各个出版社书籍数量柱状图
bar=(Bar(init_opts=opts.InitOpts(height='500px',width='1000px',theme='dark')).add_xaxis(counts.index.tolist()).add_yaxis('出版社书籍数量',counts.values.tolist(),label_opts=opts.LabelOpts(is_show=True,position='top'),itemstyle_opts=opts.ItemStyleOpts(color=JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1,[{offset: 0,color: 'rgb(255,99,71)'}, {offset: 1,color: 'rgb(32,178,170)'}])"""))).set_global_opts(title_opts=opts.TitleOpts(title='各个出版社书籍数量柱状图'),xaxis_opts=opts.AxisOpts(name='书籍名称',type_='category', axislabel_opts=opts.LabelOpts(rotate=90),),yaxis_opts=opts.AxisOpts(name='数量',min_=0,max_=29.0,splitline_opts=opts.SplitLineOpts(is_show=True,linestyle_opts=opts.LineStyleOpts(type_='dash'))),tooltip_opts=opts.TooltipOpts(trigger='axis',axis_pointer_type='cross')).set_series_opts(markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_='average',name='均值'),opts.MarkLineItem(type_='max',name='最大值'),opts.MarkLineItem(type_='min',name='最小值'),]))
)
bar.render_notebook()
电子书版本占比
c = (Liquid().add("lq", [1-per], is_outline_show=False).set_global_opts(title_opts=opts.TitleOpts(title="电子书版本占比"))
)
c.render_notebook()
书籍评论数据
for page in range(1, 11):time.sleep(1)# 确定请求url地址url = 'http://product.dangdang.com/index.php'# 请求参数data = {'r': 'comment/list','productId': '29129370','categoryPath': '01.43.79.01.00.00','mainProductId': '29129370','mediumId': '0','pageIndex': page,'sortType': '1','filterType': '1','isSystem': '1','tagId': '0','tagFilterCount': '0','template': 'publish','long_or_short': 'short',}# headers 请求头headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'}# 发送请求response = requests.get(url=url, params=data, headers=headers)# response.json() 获取响应json字典数据 键值对取值 ---> 根据冒号左边的内容, 提取冒号右边的内容html_data = response.json()['data']['list']['html']content_list = re.findall("<span><a href=.*?' target='_blank'>(.*?)</a></span>", html_data)with open('评论.txt', mode='a', encoding='utf-8') as f:f.write('\n'.join(content_list))f.write('\n')print(content_list)
词云
import jieba # 分词模块 pip install jieba
import wordcloud
import imageio
img = imageio.imread('123.png')
# wordcloud
# 1. 打开文件 获取弹幕数据
# mode='r' 一定要写吗 不一定 默认以 r
# encoding='' 要写吗? 肯定要的
f = open('评论.txt', mode='r', encoding='utf-8')
txt = f.read()
# print(txt)
# 2. jieba分词 分割词汇
txt_list = jieba.lcut(txt)
# print(txt_list)
# 列表转字符串怎么转
string = ' '.join(txt_list)
# print(string)
# 3. 词云图设置
wc = wordcloud.WordCloud(width=800, # 宽度height=500, # 高度background_color='white', # 背景颜色mask=img, # 设置图片样式font_path='msyh.ttc',scale=15,stopwords={'了', '的'},contour_width=5,contour_color='red'
)
# 4. 输入文字内容 (字符串的形式)
wc.generate(string)
# 5. 输出图片
wc.to_file('output2.png')
【python】分析当当网书籍价格、出版社、电子书版本占比数据相关推荐
- 一位同学的Python大作业【分析当当网书籍价格、出版社、电子书版本占比数据】
目录 前言 本次案例实现目标 最基本思路流程: <通用> 一. 数据来源分析 二. 代码实现步骤过程: 代码实现基本四大步骤 代码实现 获取书籍详情信息 发送请求 解析数据 保存数据 运行 ...
- [Python]scrapy爬取当当网书籍相关信息
最近想买两本程序设计的书籍,也就在当当网上面看了下,发现真是太多的书了.所以想着利用爬虫知识爬取下程序设计相关书籍的一些信息. 00_1. 首先是今天所用到的东西 python 3.5 + scrap ...
- python爬虫beautifulsoup爬当当网_利用python爬虫可视化分析当当网的图书数据!
导语 这周末就分享个小爬虫吧.利用Python爬取并简单地可视化分析当当网的图书数据. 开发工具 Python版本:3.6.4 相关模块: requests模块: bs4模块: wordcloud模块 ...
- 利用python爬虫可视化分析当当网的图书数据
导语 这周末就分享个小爬虫吧.利用Python爬取并简单地可视化分析当当网的图书数据. 开发工具 **Python版本:**3.6.4 相关模块: requests模块: bs4模块: wordclo ...
- Python 爬虫第三步 -- 多线程爬虫爬取当当网书籍信息
XPath 的安装以及使用 1 . XPath 的介绍 刚学过正则表达式,用的正顺手,现在就把正则表达式替换掉,使用 XPath,有人表示这太坑爹了,早知道刚上来就学习 XPath 多省事 啊.其实我 ...
- 数据挖掘 (三)——基于python的当当网小爬虫
导语 本文将实现利用Python爬取并简单地可视化分析当当网的图书数据. 详细的exe.源代码.程序解析等文件请关注公众号 行歌 知否, 回复关键词 当当网小爬虫 获取. 更多精彩内容请关注公众号 转 ...
- 爬虫爬当当网书籍信息
拖了好久的一个爬虫 先上代码 文字慢慢补 update(2018-5-7):加了出版社= = updata(2018-6-29):啥都加了 https://github.com/general10/d ...
- 当当网书籍信息后台统计
1.在项目中创建static文件夹-------创建js文件夹-----js文件夹下放echarts.min.js(需要在echarts官网下载) 2.在项目中创建templates文件夹------ ...
- 当当网书籍数据爬进数据库
当当网书籍数据爬进数据库 首先我们要考虑到当当网有没有反爬机制,几次后发现是没有的. 一开始我们要考虑我们要爬取的信息是哪些,然后在items.py下面全部写出来. 然后就写爬虫文件 从核心文件开始定 ...
最新文章
- java MDC_log4j MDC实现日志追踪
- 数据中心机房布线设计方案
- prometheus连续查询_Grafana + Prometheus快速搭建监控平台
- MySQL高级 - SQL优化 - limit优化
- 基于Hadoop的产品大数据分布式存储优化
- Leetcode--151. 翻转字符串里的单词
- vue cli脚手架详解_vue-cli脚手架搭建vue项目搭建
- Linux内核的学习(二)
- 6 redis 编译失败_Redis6 Windows 版本编译
- InnoDB的RR隔离级别能否防止“幻读”
- Kmalloc申请内存源码分析
- BZOJ2732[HNOI2012] 射箭
- 锐起无盘服务器陈列设置,原创]锐起无盘安装全图文设置,含SCII设置在内
- 2021五一数学建模B题思路
- sql身份证号计算年龄_函数
- 【C语言】如何判断一个数字是否为素数(质数)?
- 苹果手机屏幕镜像搜索不到电视_无线同屏器连接电视步骤
- recover的用法
- Android 更改头像(图片)并上传服务器功能Demo详解
- windows10如何查看电池损耗
热门文章
目录 前言 本次案例实现目标 最基本思路流程: <通用> 一. 数据来源分析 二. 代码实现步骤过程: 代码实现基本四大步骤 代码实现 获取书籍详情信息 发送请求 解析数据 保存数据 运行 ...
最近想买两本程序设计的书籍,也就在当当网上面看了下,发现真是太多的书了.所以想着利用爬虫知识爬取下程序设计相关书籍的一些信息. 00_1. 首先是今天所用到的东西 python 3.5 + scrap ...
导语 这周末就分享个小爬虫吧.利用Python爬取并简单地可视化分析当当网的图书数据. 开发工具 Python版本:3.6.4 相关模块: requests模块: bs4模块: wordcloud模块 ...
导语 这周末就分享个小爬虫吧.利用Python爬取并简单地可视化分析当当网的图书数据. 开发工具 **Python版本:**3.6.4 相关模块: requests模块: bs4模块: wordclo ...
XPath 的安装以及使用 1 . XPath 的介绍 刚学过正则表达式,用的正顺手,现在就把正则表达式替换掉,使用 XPath,有人表示这太坑爹了,早知道刚上来就学习 XPath 多省事 啊.其实我 ...
导语 本文将实现利用Python爬取并简单地可视化分析当当网的图书数据. 详细的exe.源代码.程序解析等文件请关注公众号 行歌 知否, 回复关键词 当当网小爬虫 获取. 更多精彩内容请关注公众号 转 ...
拖了好久的一个爬虫 先上代码 文字慢慢补 update(2018-5-7):加了出版社= = updata(2018-6-29):啥都加了 https://github.com/general10/d ...
1.在项目中创建static文件夹-------创建js文件夹-----js文件夹下放echarts.min.js(需要在echarts官网下载) 2.在项目中创建templates文件夹------ ...
当当网书籍数据爬进数据库 首先我们要考虑到当当网有没有反爬机制,几次后发现是没有的. 一开始我们要考虑我们要爬取的信息是哪些,然后在items.py下面全部写出来. 然后就写爬虫文件 从核心文件开始定 ...