京东⼿机数据爬⾍+数据可视化+python
1、系统背景
随着⽹络的迅速发展,互联⽹成为⼤量信息的载体,如何有效地提取并利⽤这些信息成为⼀个巨⼤的挑战。
通过平时浏览信息,发现很多数据我们感兴趣,但是数量庞⼤,我们如果需要分析这些数据,需要我们利⽤程序去做⼀个采集,实现数据的价值。当我们购买华为⼿机时,⽐较他们的价格,图⽚,好评数量,好评率等,以便于我们对华为⼿机进⾏数据的可视化分析,所以要利⽤爬⾍技术。
传统爬⾍从⼀个或若⼲初始⽹页的URL开始,获得初始⽹页上的URL,在抓取⽹页的过程中,不断从当前页⾯上抽取新的URL放⼊队列,直到满⾜系统的⼀定停⽌条件。
2、功能架构
Python爬⾍程序主要使⽤python语⾔进⾏数据的爬取,其中利⽤quest进⾏url的访问,利⽤lxml进⾏标签的选择,利⽤json进⾏数据的整理,利⽤pymysql进⾏数据的存储。通过if、len()等语句对数据空值的判断,利⽤数据库查询当前是否存在此商品编号判断爬取是否为重复值。
Python Django web数据可视化程序,主要利⽤python作为服务端,web(html和js)作为前端界⾯进⾏数据可视化,通过js和form表单的提交的⽅式请求python服务端,进⾏查询和新增。通过ajax的⽅式请求python服务端进⾏数据的删除和修改。
功能的具体流程图如下图所⽰:
3、环境配置
操作系统 Windows7
Python版本 3.8ksfile文件夹
Python库 quest
lxml
json
pymysql
Django
Os京东python入门教程
Sys
4、需求设计
爬取多页数据,数据清洗包括缺失值处理、重复值处理、异常值处理、数据离散化等处理,不存在缺失,异常值也要判断。数据存⼊数据库(不限)中。完成华为⼿机数据的增删改查和详情功能(管理员能够实现增删改查,普通⽤户只能查看数据),查询要求能做到模糊查询;完成⽤户的登录、注册、退出功能。
系统实体关系图:
数据定义:
5、代码
通过请求url获取标签中数据
1. req = quest.Request(url=url, headers=getHeaders())
2. data = quest.urlopen(req).read().decode("utf-8","ignore")
3. id_pat ='<strong class="J_(.*?)" '
在浏览器端F12中network中获得到商品价格的请求url。1. urlPrice ="p.3/prices/get?skuId="+ goodsId
利⽤此url的get进⾏价格的获取,goodsId为商品编号二郎神杨戬的武器叫什么
利⽤ etree的lxml进⾏html页⾯标签的筛选
goodsParams = goodsHtml.xpath(’//ul[@class=“parameter2 p-parameter-list”]/li’) img = goodsHtml.xpath(’//img[@id=“spec-img”]’)
其中goodsParams是华为⼿机的商品详情参数,img是华为⼿机的⼤图
实现对爬取数据的模糊查询,将查询数据放到context字典⾥给index.html前端,代码如下:
1. sql ="SELECT * FROM goods WHERE goodsName like "+str("'%"+ goodsName +"%'")
2.# 获取游标
3. cursor = conn.cursor()len函数是什么意思python
4. ute(sql)
5.# 使⽤fetchall()获取全部数据
6. results = cursor.fetchall()
7.# 关闭游标
8. cursor.close()
9.# 关闭连接
10. conn.close()
11. context ={}
12. context['phones']=list(results)
源代码男主的变化13.return render(request,'index.html', context)
然后利⽤web程序进⾏数据的展⽰,代码如下:
1.<table border="1" cellspacing="0" cellpadding="0">
2.<tr>
3.<td>⾃增主键</td>
4.<td>京东商品id</td>
5.<td width="30px">商品名称</td>
6.<td>图⽚</td>
7.<td>商品⽑重</td>
8.<td>商品产地</td>
9.<td>CPU</td>
10.<td>商品原始价格</td>
11.<td>商品京东价格</td>
12.<td>商品京东PLUS会员价格</td>
13.<td>评论总数</td>
14.<td>好评总数</td>
15.<td>中评总数</td>
16.<td>差评总数</td>
17.<td>视频评论总数</td>
18.<td>贴图评论总数</td>
19.<td>差评率</td>
20.<td>好评率</td>
21.</tr>
22.{%for i in phones %}
23.<tr>
24.<td>{{ i.0}}</td>
25.<td><a href="/comment/?goodsId={{ i.1 }}">{{ i.1}}</a></td>
26.<td width="30px">{{ i.2}}</td>
27.<td><img src="{{ i.17 }}"></td>
28.<td>{{ i.3}}</td>
29.<td>{{ i.4}}</td>
30.<td>{{ i.5}}</td>
31.<td>{{ i.6}}</td>
32.<td>{{ i.7}}</td>
33.<td>{{ i.8}}</td>
34.<td>{{ i.9}}</td>
spring mvc注解操作token35.<td>{{ i.10}}</td>
36.<td>{{ i.11}}</td>
37.<td>{{ i.12}}</td>
38.<td>{{ i.13}}</td>
39.<td>{{ i.14}}</td>
40.<td>{{ i.15}}</td>
41.<td>{{ i.16}}</td>
42.
43.</tr>
44.{% endfor %}
45.</table>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论