码迷,mamicode.com
首页 > 其他好文 > 详细

基于OPGG的数据分析

时间:2020-05-10 21:33:08      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:text   port   基于   csv   info   nbsp   动态加载   class   imp   

最终代码

 1 # _*_ coding:utf-8 _*_
 2 # from 坾尘
 3 # 2020/5/09
 4 from selenium import webdriver
 5 import time
 6 from bs4 import BeautifulSoup
 7 import matplotlib.pyplot as plt
 8 plt.rcParams[font.sans-serif] = [SimHei]
 9 driver =webdriver.PhantomJS(executable_path="phantomjs.exe")
10 driver.get("http://www.op.gg/champion/statistics")
11 time.sleep(5)
12 file=open(opgggg.csv,w,encoding=utf-8)
13 demo=driver.page_source
14 soup=BeautifulSoup(demo,lxml)
15 
16 b,f,c=[],[],[]
17 a=soup.find_all(name=[td],class_=[champion-index-table__cell champion-index-table__cell--champion])
18 for i in a :
19     b.append(i.a.div.text)
20 d=soup.find_all(name=[td],class_=[champion-index-table__cell champion-index-table__cell--value])
21 for i in d:
22     if i.text!=\n\n:
23         f.append(float(i.text.replace(%,‘‘)))
24 file.write(英雄名称+,+胜率+,+登场率+\n)
25 for i in range(len(b)):
26     file.write(str(b[i])+,+str(f[2*i-1])+,+str(f[2*i])+\n)
27 plt.ylim([45,55])
28 plt.title(u"op英雄")
29 plt.ylabel(u"胜率%")
30 plt.xlabel(u"英雄")
31 plt.bar(b[:10],f[:20:2],width = 0.35,align=center,color = c,alpha=0.8)
32 plt.show()
33 print(b)
34 print(f)

此次大作业,我选择爬取opgg上的数据,但是刚开始时有些困难,其原因在于opgg采用动态加载,直接使用requests库获取的源代码并不是最终呈现在用户面前的内容,我采取了selenium库模拟浏览器行为,并下载了PhantomJS,使用

driver.get("http://www.op.gg/champion/statistics")
time.sleep(5)

与requests类似使用get,为确保加载完毕,引入time.sleep(5)

 

demo=driver.page_source

获取获得的内容

与之前类似使用BeautifulSoup进行处理

将所得数据传入csv文件,并取排名前十使用matplotlib绘图。

 

技术图片

 

 

 

表格内容:

技术图片技术图片

 

 本来想在绘图中使用并列双y轴条形图,但调试一个小时都没弄好,出来的效果很糟糕

技术图片

 

 很遗憾没能做好。

基于OPGG的数据分析

标签:text   port   基于   csv   info   nbsp   动态加载   class   imp   

原文地址:https://www.cnblogs.com/zcx-7/p/12864835.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!