应用商店app下载vivoie=utf-8,vivo应用商店下载app应用无法使用

首页 > 大全 > 作者:YD1662022-12-16 12:00:23

最近想入手一台新手机,考虑到国产手机今时不同往日,无论是销量还是话语权在世界上都足够的分量,欧洲华为,印度小米,美国一加,国产手机以极为迅猛的速度攻占世界各地的手机市场。作为历来支持国产手机的忠实用户,结合对国产手机的基本认知,准备从华为、小米、OPPO、VIVO四大国产手机中做出抉择。

为了能够用数据体现这四家手机产品市场的销量、价格等真实情况,由于Python语言简明便捷,小编这边准备使用Python来对“某宝”平台进行手机相关的数据爬取。

数据可视化分析方面,虽然Python提供的numpy、pandas、matplotlib等第三方库来对数据进行计算处理,同时最终生成所需要的可视化报告,但是做出的图表缺乏动态交互,图表样式属性设置等方面也比较繁琐,并且不便进行深入的OLAP多维分析,所以这边直接使用FineBI工具来对从“某宝”平台爬取过来的手机数据进行数据分析统计。

原理介绍

应用商店app下载vivoie=utf-8,vivo应用商店下载app应用无法使用(1)

这次的诉求很简单,就是想看看国产机子的销量排名和售价情况。

数据层方面会先通过Python抓取到WEB端的网页数据,之后对爬取到数据进行解析再而存储到MYSQL数据入库。最后应用层的数据处理、数据计算统计、图表可视化呈现等工作全都交由我们的FineBI工具完成。

操作步骤

1.引入相关Pyhon库包,编写MySQL数据入库函数

应用商店app下载vivoie=utf-8,vivo应用商店下载app应用无法使用(2)

首先新建python工程,引入本次爬取网页数据和写入MySQL数据库所需要的pandas、re、request、pymysql这四个相关库包:

import pandas

import re

import requests

import pymysql

def ExecuteSQL(title,price,sales): #写入数据到mysql数据库

conn = pymysql.connect(host='xxx.xxx.xxx.xx', port=xxxx, user='xxxx', passwd='xxxx', db='xxxx', charset='utf8') #对应xx参数值修改成自己数据库的即可

cursor = conn.cursor()

# cursor.execute('CREATE TABLE MOBILE_DATA(品牌 varchar(100),价格 double,销量 int)')

# cursor.execute('DROP TABLE MOBILE_DATA')

cursor.execute("INSERT INTO MOBILE_DATA(品牌,价格,销量) VALUES (\'%s\',%d,\'%d\')"%(title,price,sales)) #执行SQL数据插入

print('数据插入成功!')

print(title,price,sales)

conn.commit() #提交执行命名

cursor.close() #释放游标对象

conn.close() #释放数据库连接对象

2.获取网页数据

然后如下图所示,定义好模拟浏览器访问header的值,通过编写Python代码用requests获取到”某宝“平台网页中的request信息:

for page in range(1,7): # 循环翻页,共7页

url = 'https://s.taobao.com/search?q=手机&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306&cps=yes&ppath=2176:136877751;2176:3244779;2176:91621;2176:39862256;2176:28247'

header = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36',

'cookie':'thw=cn; t=be73ea5ec1ffbeb254d0a3535dd00415; cna=HqWrEpIZeG4CAbYSAEIb6bav; hng=CN|zh-CN|CNY|156; miid=596160490770762658; lgc=\u5815\u843D\u4E4B\u6CEAa; tracknick=\u5815\u843D\u4E4B\u6CEAa; tg=0; uc2=wuf=https://trade.tmall.com/detail/orderDetail.htm?biz_order_id=104827474284154168&forward_action=; x=e=1&p=*&s=0&c=0&f=0&g=0&t=0&__ll=-1&_ato=0; uc3=sg2=VWxidJMT8gLCYBc+xP5FJdYe9/XfUvq2+yf0cFWq90Q=&nk2=1RSXayUHM0Sl&id2=UUpkvTJ9k5HsSA==&vt3=F8dBzLbVzPYkPml1NZk=&lg2=W5iHLLyFOGW7aA==; uss=VvioJOfdaT365u5YugXSKrRnG47jUQQG9UQvstfUu5fjcHD0zxGQLEmn; _cc_=VFC/uZ9ajQ==; mt=ci=67_1; tk_trace=oTRxOWSBNwn9dPy4KVJVbutfzK5InlkjwbWpxHegXyGxPdWTLVRjn23RuZzZtB1ZgD6Khe0jl+Aoo68rryovRBE2Yp933GccTPwH/TbWVnqEfudSt0ozZPG+kA1iKeVv2L5C1tkul3c1pEAfoOzBoBsNsJySQJwqIKz2kX83uPP5e4iE9t1ZpHdHZkk218jfUuTKISIEGrGMtBctY+2vMCmzCRVhIqleLIl+RRQHs4ekW3wNcZhDfwkkQzp9RF7kjYiNbNLTbo2mRCr3Wf97aW/fC72uuEf9Tcc6cNT9QCiB0y7NxqzS4M5NvMkxl5KoKbA+orLqu5Y9jpCfT31RlA==; cookie2=1c16eb46ef00c015dd101f731c258d77; _tb_token_=8de4c4560b63; v=0; alitrackid=www.taobao.com; lastalitrackid=www.taobao.com; swfstore=107855; JSESSIONID=ED726367865542B7BA84D801D1C72812; isg=AhcXOlKpAS4SKIXa0x_6AhsZpovNTcSrwSKOp2lEKOZNmDfacSx7DtWyjg59; uc1=cookie14=UoTdf1DFLRnICg==',

'accept':'text/html,application/xhtml xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',

'path':'/search?q=手机&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306'} #定义模拟浏览器访问header的值

html = requests.request('GET', url, headers=header) #网页request信息获取

3.HTML标签解析(Script格式)

此时我们可以查看华为、小米、OPPO、VIVO四大国产手机中的网页信息,用浏览器自带的F12工具检查相关代码即可发现,“某宝”的商品数据信息原来是存储在Script变量中。

应用商店app下载vivoie=utf-8,vivo应用商店下载app应用无法使用(3)

接下来我们只需要使用re,按照指定的标签格式,对整个网页的进行数据信息查找获取,然后将对象存储在data中即可:

ren = re.compile('"title":"(.*?)","pic_url":"(.*?)","price":"(.*?)","trace":"(.*?)","month_sales":"(.*?)"')

data = re.findall(ren, html.text)

4.MySQL数据入库

解析好数据之后,再将解析好的数据写入到MySQL数据库中:

data2 = pandas.DataFrame(data) #将data对象转换为DataFrame类型方便处理

for rows in range(1,data2.shape[0]): #循环遍历DataFrame中的所有行数据

ExecuteSQL(data2.values[rows][0],float(data2.values[rows][2]),int(data2.values[rows][4])) #MySQL数据入库

count=count 1 #计数器累加

print('恭喜您,数据已经全部爬取完毕,一共%d条数据!'%(count))

循环遍历”某宝“平台华为、小米、OPPO、VIVO四大国产手机中的相关信息数据,页面7页,共计282条数据。

应用商店app下载vivoie=utf-8,vivo应用商店下载app应用无法使用(4)

首页 12下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.