基于python的网络爬虫与数据可视化分析,网络数据爬虫及可视化分析
前言各位,七夕快到了,想好要送什么礼物了吗?
昨天有朋友私信我,问我能用计算机编程语言分析下网上小猫咪的数据,是想要送一只给女朋友,当做礼物。
网上的数据太多、太杂,而且我也不知道哪个网站的数据比较好。所以,只能找到一个猫咪交易网站的数据来分析了
地址:
http://www.maomijiaoyi.com/
爬虫部分请求数据
导入请求
URL=f http://www。毛米娇衣。com/index。PHP?/单品烈标_ c _ 2 _ 1-24.html
标题={
用户代理: Mozilla/5.0(Windows NT 10.0;win 64x 64)apple WebKit/537.36(KHTML,像壁虎一样)Chrome/92。0 .4515 .131 Safari/537.36
}
response=requests.get(url=url,headers=headers)
打印(响应。文本)解析数据
# 把获取到的超文本标记语言字符串数据转换成选择器对象这样调用
选择器=parsel .选择器(响应。文本)
# css选择器只要是根据标签属性内容提取数据编程永远不看过程只要结果
href=selector.css( .content:n-child(1)a:attr(href)).getall()
areas=selector.css( .内容:第n个孩子(1)。面积color _ 333:text’).getall()
areas=[i.strip() for i in areas] #列表推导式提取标签数据
对于活力中的索引(href,区域):
# http://www.maomijiaoyi.com/index.php?/chanpinxiangqing_224383.html
index _ URL= http://www。毛米娇衣。“com”索引[0]
响应_ 1=请求。get(URL=index _ URL,headers=headers)
selector_1=parsel .选择器(响应_1 .文本)
面积=指数[1]
# getall取所有得到取一个
title=selector_1.css( .详细信息_文本标题:正文)。获取()。条状()
shop=selector_1.css( .dinming:text’).获取()。strip() #店名
价格=选择器_ 1。CSS(。信息1分区:n-子(1)跨度。红色。size _ 24:text’).get() #价格
视图=选择器_ 1。CSS(。info 1 div:n-child(1)span:n-child(4):text ).get() #浏览次数
#替换()替换
promise=选择器_ 1。CSS(。info 1 div:n-child(2)span:text ).获取()。替换(卖家承诺: , ) # 浏览次数
num=选择器_ 1。CSS(。信息2分区:n-子(1)分区。red:text’).get() #在售只数
年龄=选择器_ 1。CSS(。信息2分区:n-子(2)分区。red:text’).get() #年龄
kind=选择器_ 1。CSS(。信息2分区:n-子(3)分区。red:text’).get() #品种
预防=选择器_ 1。CSS(。信息2分区:n-子(4)分区。red:text’).get() #预防
人=选择器_ 1。CSS( div。详细信息_文本.user _ info div:n-child(1)。c333:text’).get() #联系人
电话=选择器_ 1。CSS( div。详细信息_文本.user _ info div:n-child(2)。c333:text’).get() #联系方式
邮费=选择器_ 1。CSS( div。详细信息_文本.user _ info div:n-child(3)。c333:text’).获取()。strip() #包邮
purebred=selector _ 1.css(。新溪_内荣div:n-child(1).item _内容div:n-child(1)。c333:text’).获取()。strip() #是否纯种
性别=选择器_1.css(。新溪_内荣div:n-child(1).item _内容div:n-child(4)。c333:text’).获取()。strip() #猫咪性别
视频=选择器_1.css(。新溪_内荣div:n-child(2).item _内容div:n-child(4)。c333:text’).获取()。strip() #能否视频
worming=selector_1.css(。新溪_内荣div:n-child(2).item _内容div:n-child(2)。c333:text’).获取()。strip() #是否驱虫
dit={
地区:面积,
店名:店铺,
标题:标题,
价格:价格,
浏览次数:视图,
卖家承诺:承诺,
在售只数:数量,
年龄:年龄,
品种:善良,
预防:预防,
联系人:人,
联系方式:电话,
异地运费:邮费,
是否纯种:纯种,
猫咪性别:性,
驱虫情况:虫蛀,
能否视频:视频,
详情页:索引_url,
}保存数据
导入csv #内置模块
f=打开(猫咪1.csv ,模式=a ,编码=utf-8 ,换行符= )
csv_writer=csv .DictWriter(f,fieldnames=[地区, 店名, 标题, 价格, 浏览次数, 卖家承诺, 在售只数,
年龄, 品种, 预防, 联系人, 联系方式, 异地运费, 是否纯种,
猫咪性别, 驱虫情况, 能否视频, 详情页])
csv_writer.writeheader() #写入表头
csv_writer.writerow(dit)
打印(标题、区域、商店、价格、视图、承诺、数量、年龄、
种类,预防,人,电话,邮费,纯种,性,视频,蠕虫,index_url,sep= )得到数据
数据可视化部分词云图
从肾盂造影图将选项作为选项导入
从pyecharts .图表导入关键字云
从pyecharts.globals导入符号类型
从pyecharts.globals导入主题类型
word=[(I,1) for i in cat_info[品种].唯一()]
c=(
WordCloud(init_opts=opts .InitOpts(theme=ThemeType .光))。add(),words,shape=SymbolType .钻石)。set _ global _ opts(title _ opts=opts .TitleOpts(title= ))
)
c.render_notebook()
交易品种占比图
从肾盂造影图将选项作为选项导入
从pyecharts .图表导入树形图
钟平=卡特彼勒信息[品种].value_counts().重置索引()
data=[{value:i[1], name:i[0]} for i in zip(list(钟平[index])、列表(钟平[品种]))]
c=(
TreeMap(init_opts=opts .InitOpts(theme=ThemeType .光))。添加(,数据)。set _ global _ opts(title _ opts=opts .TitleOpts(title= ))。set _ series _ opts(label _ opts=opts .LabelOpts(position=inside ))
)
c.render_notebook()
均价占比图
从肾盂造影图将选项作为选项导入
从pyecharts .图表导入图片栏
从pyecharts.globals导入符号类型
位置=列表(价格[品种])
值=列表(价格[价格])
c=(
PictorialBar(init_opts=opts .InitOpts(theme=ThemeType .光))。add_xaxis(位置)。add_yaxis(
,
价值观,
label_opts=opts .LabelOpts(is_show=False),
symbol_size=18
symbol_repeat=固定,
symbol_offset=[0,0]
is_symbol_clip=True,
符号=SymbolType .矩形附近,
)。反转_轴()。集合_全局_opts(
title_opts=opts .TitleOpts(title=均价排名),
xaxis_opts=opts .AxisOpts(is_show=False),
yaxis_opts=opts .轴零件(
axistick_opts=opts .AxisTickOpts(is_show=False),
axisline_opts=opts .AxisLineOpts(
linestyle_opts=opts .线条样式选项(不透明度=0),
),
),
)。集合系列选项(
label_opts=opts .标签选项(位置=右内)
)
)
c.render_notebook()
猫龄柱状图
从肾盂造影图将选项作为选项导入
从pyecharts .图表导入栏
从pyecharts.faker导入骗子
x=[1-3个月,3-6个月,6-9个月,9-12个月,1年以上]
y=[69343,115288,18239,4139,5]
c=(
Bar(init_opts=opts .InitOpts(theme=ThemeType .光))。add_xaxis(x)。add_yaxis(,y)。set _ global _ opts(title _ opts=opts .TitleOpts(title=猫龄分布))
)
c.render_notebook()
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。