




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第Python爬取当网书籍数据并数据可视化展示目录一、开发环境二、模块使用三、爬虫代码实现步骤1.导入所需模块2.发送请求,用python代码模拟浏览器发送请求3.解析数据,提取我们想要数据内容4.多页爬取5.保存数据,保存csv表格里面四、数据可视化1.导入所需模块2.导入数据3.可视化
一、开发环境
Python3.8Pycharm2025.2专业版
二、模块使用
csv模块把爬取下来的数据保存表格里面的内置模块
requestspipinstallrequests数据请求模块
parselpipinstallparsel数据解析模块css选择器去提取数据
三、爬虫代码实现步骤
导入所需模块发送请求,用python代码模拟浏览器发送请求解析数据,提取我们想要数据内容多页爬取保存数据,保存csv表格里面
1.导入所需模块
importrequests
#数据请求模块第三方模块需要pipinstallrequests
importparsel
#数据解析模块第三方模块需要pipinstallparsel
importcsv
#保存csv表格数据模块内置模块
importtime
#时间模块
2.发送请求,用python代码模拟浏览器发送请求
headers请求头作用就是python代码伪装成浏览器对于服务器发送请求
User-Agent用户代理浏览器的基本身份标识
标题中无效的返回字符或前导空格:User-Agent不要留有空格
通过requests模块里面get请求方法,对于url地址发送请求,并且携带上面header请求头参数,最后用response变量接收返回数据
url=f'/books/bestsellers/01.00.00.00.00.00-24hours-0-0-1-{page}'
#headers请求头字典数据类型
headers={
'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/96.0.4664.45Safari/537.36'
response=requests.get(url=url,headers=headers)
3.解析数据,提取我们想要数据内容
selector=parsel.Selector(response.text)
#对于获取到的html字符串数据进行转换selector对象
#css选择器就是根据标签属性提取相应的数据
lis=selector.css('ul.bang_listli')
forliinlis:
#.name定位class类名name标签a标签attr()属性选择器取a标签里面title属性get()获取数据
title=li.css('.namea::attr(title)').get()
#书名
#获取标签里面文本数据直接text
comment=li.css('.stara::text').get().replace('条评论','')
#评论
recommend=li.css('.star.tuijian::text').get().replace('推荐','')
#推荐
author=li.css('.publisher_infoa:nth-child(1)::attr(title)').get()
#作者
publish=li.css('div:nth-child(6)a::text').get()
#出版社
price_n=li.css('.price.price_n::text').get()
#售价
price_r=li.css('.price.price_r::text').get()
#原价
price_s=li.css('.price.price_s::text').get()
#折扣
price_e=li.css('.price.price_e.price_n::text').get()
#电子书价格
href=li.css('.namea::attr(href)').get()
#详情页
dit={
'书名':title,
'评论数':comment,
'推荐量':recommend,
'作者':author,
'出版社':publish,
'售价':price_n,
'原价':price_r,
'折扣':price_s,
'电子书价格':price_e,
'详情页':href,
}
csv_writer.writerow(dit)
#数据保存到csv
print(title,comment,recommend,author,publish,price_n,price_r,price_s,price_e,href,sep='|')
4.多页爬取
forpageinrange(1,26):
#字符串格式化方法
print(f'正在爬取第{page}页的数据内容')
time.sleep(1.5)
url=f'/books/bestsellers/01.00.00.00.00.00-24hours-0-0-1-{page}'
5.保存数据,保存csv表格里面
#创建打开一个文件进行保存
f=open('当当图书.csv',mode='a',encoding='utf-8',newline='')
csv_writer=csv.DictWriter(f,fieldnames=[
'书名',
'评论数',
'推荐量',
'作者',
'出版社',
'售价',
'原价',
'折扣',
'电子书价格',
'详情页',
csv_writer.writeheader()
#写入表头
运行代码,效果如下图:
四、数据可视化
1.导入所需模块
importpandasaspd
frompyecharts.chartsimport*
frompyecharts.globalsimportThemeType#设定主题
frommons.utilsimportJsCode
importpyecharts.optionsasopts
2.导入数据
df=pd.read_csv('书籍信息.csv',encoding='utf-8',engine='python')
df.head()
3.可视化
书籍总体价格区间:
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("""newecharts.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()
书籍评论数最高Top20:
bar=(
Bar(init_opts=opts.InitOpts(height='500px',width='1000px',theme='dark'))
.add_xaxis(price_top.index.tolist())
.add_yaxis(
'书籍单价',
price_top.values.tolist(),
label_opts=opts.LabelOpts(is_show=True,position='top'),
itemstyle_opts=opts.ItemStyleOpts(
color=JsCode("""newecharts.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_='cate
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐饮服务与管理1+X证书模拟试题(含答案)
- 2025在线教育平台项目合作合同
- 2025年个人房屋抵押借款合同范本
- 短期活动赞助协议
- 短内容制作协议
- 2025神农科技集团有限公司第一批校园招聘17人(山西)笔试参考题库附带答案详解
- 纺织行业竞争对手分析方法试题及答案
- 2025年山东省环保发展集团生态有限公司及权属企业社会招聘(10人)笔试参考题库附带答案详解
- 2025上海泛象文化发展有限公司招聘5人笔试参考题库附带答案详解
- 郁南教师面试题及答案
- 热力管道吊装专项方案
- JBQGTGST9000控制器说明书
- 水下探测技术发展-洞察分析
- UL2595标准中文版-2015电池驱动设备的要求中文版
- 初二英语语法填空浙江版单选题100道及答案解析
- DB21T 3508-2021 旅游景区木栈道设置与维护规范
- 扁桃体癌护理查房
- 医疗质量及医疗安全
- 烧伤治疗和护理
- 2024年广西职业院校技能大赛高职组《区块链技术应用》赛项样卷
- 医疗技术销售技巧
评论
0/150
提交评论