前言
战狼最近大火,为了紧跟热度,根据之前学的做一个关于战狼2票房售卖情况的数据分析。
要做数据分析,首先要有数据,数据从哪儿来呢?
网上有专门做票房时时统计的网站,他们会把最新的票发信息公布在网上,但是数据是以网页的方式呈现,而不是直接给你,所以我们需要做的就是先把网上的数据爬下来。
网页截图如下:
可以看到url中有一个data参数,可以根据传入日期来获取指定日期的票房数据
数据获取
python中可以通过引用urllib包来进行网页信息的抓取,在通过对网页结果分析来筛选出想要的数据。
获取网页源文件
首先引用两个包,再定义一个变量,将要抓取的url地址进行赋值
#-*- coding: utf-8 -*-
import urllib
url = 'https://piaofang.maoyan.com/?date=2017-08-01'
构造一个方法用于获取网页的源代码
def getHtml(url):
page = urllib.urlopen(url)
html = page.read()
return html
当我们执行以下代码时,我们会在控制台中看到该网页的所有源代码
html = getHtml(url)
print html
运行结果如下
runfile('C:/Users/Administrator/.spyder2/temp.py', wdir='C:/Users/Administrator/.spyder2')
<!DOCTYPE html>
<html>
<head>
<title>猫眼专业版-实时票房</title>
<!--// dns prefetch -->
<link rel="dns-prefetch" href="//analytics.meituan.com" />
<link rel="dns-prefetch" href="//ms0.meituan.net" />
<link rel="dns-prefetch" href="//mc.meituan.net" />
<link rel="dns-prefetch" href="//s0.meituan.net" />
<link rel="dns-prefetch" href="//p0.meituan.net" />
<link rel="dns-prefetch" href="//p1.meituan.net" />
<!--// meta section -->
<meta charset="utf-8">
<meta name="keywords" content="猫眼票房分析,猫眼电影,电影票房,实时票房,日票房,预售票房,影片票房趋势,受众画像,实时排片,预售排片,上座率,历史票房" />
<meta name="description" content="猫眼票房分析,提供最准确的每日电影实时票房、排片、上座率查询,为电影从业者提供最及时、专业的数据分析服务" />
<meta http-equiv="cleartype" content="yes" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="Cache-Control" CONTENT="no-cache" />
<meta http-equiv="Pragma" CONTENT="no-cache" />
<meta http-equiv="cache-control" CONTENT="no-store" />
<meta name="format-detection" content="telephone=no" />
<meta name="renderer" content="webkit">
<link rel="icon" type="image/x-icon" href="//ms0.meituan.net/piaofang/img/favicon.ico" />
.....
<script src="//ms0.meituan.net/piaofang/react/stat-6135315b.js" async></script>
<script src="//ms0.meituan.net/piaofang/react/felis-25543cb1.js" async></script>
</body>
</html>
这其实就是我们通过浏览器能查看到的源文件。但是我们会发现这个网页的源文件并不是我们想要的链接的源文件,而是该网站进行了后台处理,直接访问该链接后会被定向至票房首页。所以这里通过爬取网页源文件来获取数据的方式就行不通了。
找到数据接口
由于现在的网页基本都是动态网页,其数据都是通过后台服务进行获取的,所以我们想办法找到他对应的数据接口直接获取数据就行了。
那么我们继续用数据点击的方式进入到https://piaofang.maoyan.com/?date=2017-08-01这个网址,然后打开开发者工具,选择Network标签页,对网页进行抓包。
这个时候,将监听窗口的滚动条拖至最底部,然后在网页上选择一个时间,来查看他脚本执行情况。
我们选择2017年8月2日,这个时候网页判定到日期发生改变,需要重新获取数据,就会去调用它的数据接口,我们在监听窗口里就会发现它。
我们会发现这么一条记录,传递了时间参数,且为我们指定的日期2017-08-02
我们访问这个地址,再看它的详细信息,发现确实是我们想要的数据。返回的是一个json结果集。
我们修改它的时间参数,发现它也能正常运行,并返回相应的结果。
编写我们的代码,将数据获取:
#-*- coding: utf-8 -*-
import urllib
import json
url = 'https://piaofang.maoyan.com/dayoffice?date=2017-08-01'
def getData(url):
page = urllib.urlopen(url)
data = page.read()
return data
if __name__ == "__main__":
data = getData(url)
print data
执行后,我们会看到数据已经被获取
runfile('C:/Users/Administrator/.spyder2/temp.py', wdir='C:/Users/Administrator/.spyder2')
{"ticketDesc":"<div class='logo'>\n <span id=\"dayStr\" class=\"today\">\n 2017-08-01\n 周二\n </span>\n <span>大盘:</span>\n <span id='ticket_count'><i class=\"cs\">.万</i></span>\n</div>\n<div id=\"dayTips\" class=\"update\">北京时间每天10点更新票房</div>\n","ticketList":" <ul class=\"canTouch\" data-com=\"hrefTo,href:'/movie/344264?_v_=yes'\">\n <li class='c1'>\n <b>战狼2</b>\n <br><em>上映6天</em><em style=\"margin-left: .1rem\"><i class=\"cs\">.亿</i></em>\n </li>\n <li class=\"c2 \">\n <b><i class=\"cs\">.</i></b><br/>\n </li>\n <li class=\"c3 \"><i class=\"cs\">.%</i></li>\n <li class=\"c4 \">\n <i class=\"cs\">.%</i>\n </li>\n <li class=\"c5 \">\n <span style=\"margin-right:-.1rem\">\n <i class=\"cs\">.%</i>\n </span>\n <span style=\"padding-right:.24rem\" class=\"_more\"></span>\n </li>\n <li class=\"solid\">\n <b>战狼2</b>\n <br><em>上映6天</em>\n </li>\n </ul>\n <ul class=\"canTouch\" data-com=\"hrefTo,href:'/movie/345011?_v_=yes'\">\n <li class='c1'>\n <b>建军大业</b>\n <br><em>上映6天</em><em style=\"margin-left: .1rem\"><i class=\"cs\">.亿</i></em>\n </li>\n <li class=\"c2 \">\n <b><i class=\"cs\">.</i></b><br/>\n </li>\n <li class=\"c3 \"><i class=\"cs\">.%</i></li>\n <li class=\"c4 \">\n <i
数据解析
数据得到了,但是会有很多我们不需要的数据,我们就要对他进行解析,挖出我们需要的数据。
我们将得到的Json数据复制到在线解析平台去查看下他的内容:
发现在ticketList里面的书就是我们想要的网页表格数据,但他的形式是html的,而不是数据形式,所以我们还要对html的内容进行解析。那么首先要将Html内容从Json里获取出来,于是新增方法:
def getHtml(jsonData):
data = json.loads(jsonData)
return data['ticketList'].encode('utf-8').replace('\n', '')
if __name__ == "__main__":
data = getData(url)
getHtml(data)
执行后,发现我们成功得到了Html内容,并将内容中多余的\n去掉。
In [401]: runfile('C:/Users/Administrator/.spyder2/temp.py', wdir='C:/Users/Administrator/.spyder2')
<ul class="canTouch" data-com="hrefTo,href:'/movie/344264?_v_=yes'"> <li class='c1'> <b>战狼2</b> <br><em>上映6天</em><em style="margin-left: .1rem"><i class="cs">.亿</i></em> </li> <li class="c2 "> <b><i class="cs">.</i></b><br/> </li> <li class="c3 "><i class="cs">.%</i></li> <li class="c4 "> <i class="cs">.%</i> </li> <li class="c5 "> <span style="margin-right:-.1rem"> <i class="cs">.%</i> </span> <span style="padding-right:.24rem" class="_more"></span> </li> <li class="solid"> <b>战狼2</b> <br><em>上映6天</em> </li> </ul> <ul class="canTouch" data-com="hrefTo,href:'/movie/345011?_v_=yes'"> <li class='c1'> <b>建军大业</b> <br><em>上映6天</em><em style="margin-left: .1rem"><i class="cs">.亿</i></em> </li> <li class="c2 "> <b><i class="cs">.</i></b><br/> </li> <li class="c3 "><i class="cs">.%</i></li> <li class="c4 "> <i class="cs">.%</i> </li> <li class="c5 "> <span style="margin-right:-.1rem"> <i class="cs">.%</i> </span> <span style="padding-right:.24rem" class="_more"></span> </li> <li class="solid"> <b>建军大业</b> <br><em>上映6天</em> </li> </ul> <ul class="canTouch" data-com="hrefTo,href:'/movie/249900?_v_=yes'"> <li class='c1'> <b>神偷奶爸3</b> <br><em>上映26天</em><em style="margin-left: .1rem"><i class="cs">.亿</i></em> </li> <li class="c2 "> <b><i class="cs">.</i></b><br/> </li> <li class="c3 "><i class="cs">.%</i></li> <li class="c4 "> <i class="cs">.%</i> </li> <li class="c5 "> <span style="margin-right:-.1rem"> <i class="cs">.%</i> </span> <span style="padding-right:.24rem" class="_more"></span> </li> <li class="solid"> <b>神偷奶爸3</b> <br><em>上映26天</em> </li> </ul> <ul class="canTouch" data-com="hrefTo,href:'/movie/345972?_v_=yes'"> <li class='c1'> <b>大耳朵图图之美食狂想曲</b> <br><em>上映5天</em><em style="margin-left: .1rem"><i class="cs">.万</i></em> </li> <li class="c2 "> <b><i class="cs">.</i></b><br/> </li> <li class="c3 "><i class="cs">.%</i></li> <li class="c4 "> <i class="cs">.%</i> </li> <li class="c5 "> <span style="margin-right:-.1rem"> <i class="cs">.%</i> </span> <span
......
现在我们要做的就是解析这个Html获取我们需要的数据了。我们可以发现数据的规律是,电影存放在ul中,而每一个数据单独存放于li中的,于是需要用到正则表达式进行解析。
添加解析方法:
def parseHtml(html):
reg = r"<ul.+?>.+?<li class='c1'>.+?<b>(.+?)</b>"
pattern = re.compile(reg)
movieList = re.findall(pattern, html)
for movie in movieList:
print movie
if __name__ == "__main__":
data = getData(url)
html = getHtml(data)
print parseHtml(html)
首先尝试将电影名称解析出来,我们发现电影名称在class=’c1’的li中,执行代码后结果如下:
In [341]: runfile('C:/Users/Administrator/.spyder2/temp.py', wdir='C:/Users/Administrator/.spyder2')
战狼2
建军大业
神偷奶爸3
大耳朵图图之美食狂想曲
绣春刀II:修罗战场
闪光少女
悟空传
豆福传
父子雄兵
大护法
阿唐奇遇
夜半凶铃
血战湘江
京城81号II
绿野仙踪之奥兹国奇幻之旅
深夜食堂2
地球:神奇的一天
冈仁波齐
李三娘
喵星人
战狼
鲛珠传
阳光萌星社
我是马布里
重返·狼群
None
可以看到已经成功将电影名解析出来了,继续修改解析方法中的正则表达式,将其余信息都抓取出来:
#-*- coding: utf-8 -*-
#-*- coding: utf-8 -*-
import urllib
import json
import re
url = 'https://piaofang.maoyan.com/dayoffice?date=2017-08-01&cnt=10'
def getData(url):
page = urllib.urlopen(url)
data = page.read()
return data
def getHtml(jsonData):
data = json.loads(jsonData)
return data['ticketList'].encode('utf-8').replace('\n', '')
def parseHtml(html):
reg = r"<ul.+?>.+?<li class='c1'>.+?<b>(.+?)</b>.+?\<li class=\"c2.+?<b>"
reg += "<i class=\"cs\">(.+?)</i></b>.+?\<li class=\"c3.+?<b><i class=\"cs\">"
reg += "(.+?)</i></b>.+?\<li class=\"c4.+?<i class=\"cs\">(.+?)</i>.+?\<li "
reg += "class=\"c5.+?<i class=\"cs\">(.+?)</i>"
pattern = re.compile(reg)
movieList = re.findall(pattern, html)
return movieList
if __name__ == "__main__":
data = getData(url)
html = getHtml(data)
movieList = parseHtml(html)
执行后,我们选择打印movieList,我们发现所有的数据已经被取出来了
In [6]: movieList
Out[6]:
[('\xe6\x88\x98\xe7\x8b\xbc2',
'.',
'.',
'.%',
'.%'),
('\xe7\xa5\x9e\xe5\x81\xb7\xe5\xa5\xb6\xe7\x88\xb83',
'.',
'.',
'.%',
'.%'),
('\xe7\xbb\xa3\xe6\x98\xa5\xe5\x88\x80II\xef\xbc\x9a\xe4\xbf\xae\xe7\xbd\x97\xe6\x88\x98\xe5\x9c\xba',
'.',
'.',
'.%',
'.%'),
('\xe6\x82\x9f\xe7\xa9\xba\xe4\xbc\xa0',
'.',
'.',
'.%',
'.%'),
('\xe7\x88\xb6\xe5\xad\x90\xe9\x9b\x84\xe5\x85\xb5',
'.',
'.',
'.%',
'.%'),
('\xe9\x98\xbf\xe5\x94\x90\xe5\xa5\x87\xe9\x81\x87',
'.',
'.',
'.%',
'.%'),
('\xe8\xa1\x80\xe6\x88\x98\xe6\xb9\x98\xe6\xb1\x9f',
'.',
'.',
'.%',
'.%'),
('\xe7\xbb\xbf\xe9\x87\x8e\xe4\xbb\x99\xe8\xb8\xaa\xe4\xb9\x8b\xe5\xa5\xa5\xe5\x85\xb9\xe5\x9b\xbd\xe5\xa5\x87\xe5\xb9\xbb\xe4\xb9\x8b\xe6\x97\x85',
'.',
'.',
'.%',
'.%'),
('\xe5\x9c\xb0\xe7\x90\x83\xef\xbc\x9a\xe7\xa5\x9e\xe5\xa5\x87\xe7\x9a\x84\xe4\xb8\x80\xe5\xa4\xa9',
'.',
'.',
'.%',
'.%'),
('\xe6\x9d\x8e\xe4\xb8\x89\xe5\xa8\x98',
'.',
'.',
'.%',
'.%'),
('\xe6\x88\x98\xe7\x8b\xbc',
'.',
'.',
'.%',
'%'),
('\xe9\x98\xb3\xe5\x85\x89\xe8\x90\x8c\xe6\x98\x9f\xe7\xa4\xbe',
'.',
'.',
'.%',
'.%')]
但是出来的数字是经过了加密的,切密钥会隔一段时间就换。OMG,又要想办法了。
再次来到浏览器的开发工具查看该接口的response返回结果
我们发现这里显示的是数字,这是网页调用返回的结果,而直接通过url访问接口就会出现乱码。两者的区别在于网页调用会传递一些头部信息,说明你是普通用户。但是直接url访问就不会有头信息,系统会认为你是非法用户所以对数据进行了加密处理。
那么测试一下,想法是否正确,我们来将头部信息传递给服务器,伪装成用户去访问接口:
在开发者工具里可以看到通过浏览器访问所传递的头信息
代码头部增加一个引用
import requests
再增加一个测试方法
def getData1(url):
headers={
"authority": "piaofang.maoyan.com",
"method": "GET",
"path": "/dayoffice?date=2017-08-01&cnt=10",
"scheme": "https",
"accept": "*/*",
"accept-encoding": "gzip, deflate, br",
"accept-language": "zh-CN,zh;q=0.8",
"referer": "https://piaofang.maoyan.com/?date=2017-08-01",
"uid": "e4e5902fc42ad5e198b207d76af1d82e7056cb82",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36",
"x-requested-with": "XMLHttpRequest"
}
req = requests.get(url, headers=headers)
print req.content
调用该测试方法
if __name__ == "__main__":
#data = getData(url)
#html = getHtml(data)
#movieList = parseHtml(html)
getData1(url)
返回结果如下
runfile('C:/Users/Administrator/.spyder2/temp.py', wdir='C:/Users/Administrator/.spyder2')
{"ticketDesc":"<div class='logo'>\n <span id=\"dayStr\" class=\"today\">\n 2017-08-01\n 周二\n </span>\n <span>大盘:</span>\n <span id='ticket_count'>33901.8万</span>\n</div>\n<div id=\"dayTips\" class=\"update\">北京时间每天10点更新票房</div>\n","ticketList":" <ul class=\"canTouch\" data-com=\"hrefTo,href:'/movie/344264?_v_=yes'\">\n <li class='c1'>\n <b>战狼2</b>\n <br><em>上映6天</em><em style=\"margin-left: .1rem\">15.62亿</em>\n </li>\n <li class=\"c2 \">\n <b>29249.43</b><br/>\n </li>\n <li class=\"c3 \">86.3%</li>\n <li class=\"c4 \">\n 56.4%\n </li>\n <li class=\"c5 \">\n <span style=\"margin-right:-.1rem\">\n 42.4%\n </span>\n <span style=\"padding-right:.24rem\" class=\"_more\"></span>\n </li>\n <li class=\"solid\">\n <b>战狼2</b>\n <br><em>上映6天</em>\n </li>\n </ul>\n <ul class=\"canTouch\" data-com=\"hrefTo,href:'/movie/345011?_v_=yes'\">\n <li class='c1'>\n <b>建军大业</b>\n <br><em>上映6天</em><em style=\"margin-left: .1rem\">2.63亿</em>\n </li>\n <li class=\"c2 \">\n <b>3248.29</b><br/>\n </li>\n <li class=\"c3 \">9.6%</li>\n <li class=\"c4 \">\n 22.3%\n </li>\n <li class=\"c5 \">\n <span style=\"margin-right:-.1rem\">\n 19.3%\n </span>\n <span style=\"padding-right:.24rem\" class=\"_more\"></span>\n </li>\n <li class=\"solid\">\n <b>建军大业</b>\n <br><em>上映6天</em>\n </li>\n </ul>\n <ul class=\"canTouch\" data-com=\"hrefTo,href:'/movie/249900?_v_=yes'\">\n <li class='c1'>\n <b>神偷奶爸3</b>\n <br><em>上映26天</em><em style=\"margin-left: .1rem\">9.97亿</em>\n </li>\n <li class=\"c2 \">\n <b>464.67</b><br/>\n </li>\n <li class=\"c3 \">1.4%</li>\n <li class=\"c4 \">\n 4.7%\n </li>\n <li class=\"c5 \">\n <span style=\"margin-right:-.1rem\">\n 13.7%\n </span>\n <span style=\"padding-right:.24rem\" class=\"_more\"></span>\n </li>\n <li class=\"solid\">\n <b>神偷奶爸3</b>\n <br><em>上映26天</em>\n </li>\n </ul>\n <ul class=\"canTouch\" data-com=\"hrefTo,href:'/movie/345972?_v_=yes'\">\n <li class='c1'>\n <b>大耳朵图图之美食狂想曲</b>\n <br><em>上映5天</em><em style=\"margin-left: .1rem\">2625.3万</em>\n </li>\n <li class=\"c2 \">\n <b>225.61</b><br/>\n </li>\n <li class=\"c3 \">0.7%</li>\n <li class=\"c4 \">\n 3.9%\n </li>\n <li class=\"c5 \">\n <span style=\"margin-right:-.1rem\">\n 10.0%\n </span>\n <span style=\"padding-right:.24rem\" class=\"_more\"></span>\n </li>\n <li class=\"solid\">\n <b>大耳朵图图之美食狂想曲</b>\n <br><em>上映5天</em>\n </li>\n </ul>\n <ul class=\"canTouch\" data-com=\"hrefTo,href:'/movie/341189?_v_=yes'\">\n <li class='c1'>\n <b>绣春刀II:修罗战场</b>\n <br><em>上映14
可以看到,乱码成功的显示成了数字。
那么可以修改代码了,将GetData替换为以上方法。代码调整如下:
#-*- coding: utf-8 -*-
import urllib
import json
import re
import requests
url = 'https://piaofang.maoyan.com/dayoffice?date=2017-08-01&cnt=10'
def getHtml(jsonData):
data = json.loads(jsonData)
return data['ticketList'].encode('utf-8').replace('\n', '').replace(' ','')
def parseHtml(html):
reg = r"<ul.+?><liclass='c1'><b>(.+?)</b>.+?</li>"
reg += r"<liclass=\"c2\"><b>(.+?)</b>.+?</li>"
reg += r"<liclass=\"c3\">(.+?)</li>"
reg += r"<liclass=\"c4\">(.+?)</li>"
reg += r"<liclass=\"c5\"><spanstyle=\"margin-right:-.1rem\">(.+?)</span>"
pattern = re.compile(reg)
movieList = re.findall(pattern, html)
return movieList
def getData(url):
headers={
"authority": "piaofang.maoyan.com",
"method": "GET",
"path": "/dayoffice?date=2017-08-01&cnt=10",
"scheme": "https",
"accept": "*/*",
"accept-encoding": "gzip, deflate, br",
"accept-language": "zh-CN,zh;q=0.8",
"referer": "https://piaofang.maoyan.com/?date=2017-08-01",
"uid": "e4e5902fc42ad5e198b207d76af1d82e7056cb82",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36",
"x-requested-with": "XMLHttpRequest"
}
req = requests.get(url, headers=headers)
return req.content
if __name__ == "__main__":
data = getData(url)
html = getHtml(data)
movieList = parseHtml(html)
输出结果为:
runfile('C:/Users/Administrator/.spyder2/temp.py', wdir='C:/Users/Administrator/.spyder2')
movieList
Out[7]:
[('\xe6\x88\x98\xe7\x8b\xbc2', '29249.43', '86.3%', '56.4%', '42.4%'),
('\xe5\xbb\xba\xe5\x86\x9b\xe5\xa4\xa7\xe4\xb8\x9a',
'3248.29',
'9.6%',
'22.3%',
'19.3%'),
('\xe7\xa5\x9e\xe5\x81\xb7\xe5\xa5\xb6\xe7\x88\xb83',
'464.67',
'1.4%',
'4.7%',
'13.7%'),
('\xe5\xa4\xa7\xe8\x80\xb3\xe6\x9c\xb5\xe5\x9b\xbe\xe5\x9b\xbe\xe4\xb9\x8b\xe7\xbe\x8e\xe9\xa3\x9f\xe7\x8b\x82\xe6\x83\xb3\xe6\x9b\xb2',
'225.61',
'0.7%',
'3.9%',
'10.0%'),
('\xe7\xbb\xa3\xe6\x98\xa5\xe5\x88\x80II\xef\xbc\x9a\xe4\xbf\xae\xe7\xbd\x97\xe6\x88\x98\xe5\x9c\xba',
'186.07',
'0.5%',
'3.0%',
'11.4%'),
('\xe9\x97\xaa\xe5\x85\x89\xe5\xb0\x91\xe5\xa5\xb3',
'137.56',
'0.4%',
'1.4%',
'15.6%'),
('\xe6\x82\x9f\xe7\xa9\xba\xe4\xbc\xa0', '130.83', '0.4%', '2.2%', '10.2%'),
('\xe8\xb1\x86\xe7\xa6\x8f\xe4\xbc\xa0', '66.90', '0.2%', '2.8%', '6.9%'),
('\xe7\x88\xb6\xe5\xad\x90\xe9\x9b\x84\xe5\x85\xb5',
'44.96',
'0.1%',
'0.9%',
'11.4%'),
('\xe5\xa4\xa7\xe6\x8a\xa4\xe6\xb3\x95', '29.90', '0.1%', '0.4%', '10.5%'),
('\xe9\x98\xbf\xe5\x94\x90\xe5\xa5\x87\xe9\x81\x87',
'23.77',
'0.1%',
'0.5%',
'9.8%'),
('\xe5\xa4\x9c\xe5\x8d\x8a\xe5\x87\xb6\xe9\x93\x83',
'17.66',
'0.1%',
'0.7%',
'9.1%'),
('\xe8\xa1\x80\xe6\x88\x98\xe6\xb9\x98\xe6\xb1\x9f',
'17.26',
'0.1%',
'0.0%',
'64.3%'),
('\xe4\xba\xac\xe5\x9f\x8e81\xe5\x8f\xb7II', '9.74', '0.0%', '0.2%', '9.3%'),
('\xe7\xbb\xbf\xe9\x87\x8e\xe4\xbb\x99\xe8\xb8\xaa\xe4\xb9\x8b\xe5\xa5\xa5\xe5\x85\xb9\xe5\x9b\xbd\xe5\xa5\x87\xe5\xb9\xbb\xe4\xb9\x8b\xe6\x97\x85',
'7.40',
'0.0%',
'0.2%',
'6.9%'),
('\xe6\xb7\xb1\xe5\xa4\x9c\xe9\xa3\x9f\xe5\xa0\x822',
'7.34',
'0.0%',
'0.1%',
'12.1%'),
('\xe5\x9c\xb0\xe7\x90\x83\xef\xbc\x9a\xe7\xa5\x9e\xe5\xa5\x87\xe7\x9a\x84\xe4\xb8\x80\xe5\xa4\xa9',
'4.25',
'0.0%',
'0.0%',
'100%'),
('\xe5\x86\x88\xe4\xbb\x81\xe6\xb3\xa2\xe9\xbd\x90',
'4.04',
'0.0%',
'0.1%',
'12.2%'),
('\xe6\x9d\x8e\xe4\xb8\x89\xe5\xa8\x98', '2.26', '0.0%', '0.0%', '70.2%'),
('\xe5\x96\xb5\xe6\x98\x9f\xe4\xba\xba', '2.06', '0.0%', '0.1%', '10.1%'),
('\xe6\x88\x98\xe7\x8b\xbc', '1.75', '0.0%', '0.0%', '5.5%'),
('\xe9\xb2\x9b\xe7\x8f\xa0\xe4\xbc\xa0', '1.73', '0.0%', '0.0%', '100%'),
('\xe9\x98\xb3\xe5\x85\x89\xe8\x90\x8c\xe6\x98\x9f\xe7\xa4\xbe',
'1.64',
'0.0%',
'0.0%',
'69.4%'),
('\xe6\x88\x91\xe6\x98\xaf\xe9\xa9\xac\xe5\xb8\x83\xe9\x87\x8c',
'1.60',
'0.0%',
'0.0%',
'76.7%'),
('\xe9\x87\x8d\xe8\xbf\x94\xc2\xb7\xe7\x8b\xbc\xe7\xbe\xa4',
'1.59',
'0.0%',
'0.0%',
'9.5%')]
数据获取及解析搞定。