不知道在玩和平精英这款游戏时你有没有这样感想,为什么自己的枪朝敌人开了几枪(全都命中)也没有把别人击倒,敌人几枪就把我干到了。也许是你不了解不同枪械的威力吧!今天,我就带大家去爬取枪械威力的数据,希望大家以后玩的时候,别在犯这种的错误了。
原标题:Python爬虫爬取和平精英这款游戏的枪械信息
1.怎样实现
首先让我们来了解一下需要的模块吧!
requests、bs4. 这两个模块是第三方模块,需要安装
我们按住win+R 在弹出来的窗口上输入cmd,来到命令窗口,输入pip install requests、pip install bs4即可
我们需要来到这个网址:和平精英枪械介绍
进入之后,我们发现这里有许多枪械、还有手雷。
根据需要我们只要爬取这些枪械名称、枪械链接即可,按一下电脑键盘F12,可以发现这些信息在这个标签下面。
为了后面更好让读者更加容易找到自己的枪械,我们可以把这个枪械的种类爬下来。
代码实现:
content=soup.select('div.area.wp.mt10.slide_wp')[0] # 得到相关枪械的信息
list1=content.select('ul.cf.slide_nav>li') # 枪械的种类 如 突击步枪、机枪、狙击枪
list2=soup.select('ul.clist.l170.cf') # 所有枪械的信息
dict1={} # 构建一个字典,关键字为枪械的种类,值为枪械信息的列表
for i in range(len(list2)):
list3=list2[i].select('li>a')
for j in range(len(list3)):
list3[j]=[list3[j]['href'],list3[j].get_text()] # 第一值是枪械的网址、第二个值是枪械的名称
dict1[list1[i]]=list3
这样我们根据自己选择,选择一把枪械,这样就可以得到这个枪械的网址了。
根据这个网址,我们可以来到这个界面
可以发现,这里有许多关于这把 AKM枪械的信息,下面还有枪械威力的数据,我们只需把这些信息爬取得到即可。
我们按F12,发现这些信息都在这个标签下面,这个标签一共有四个,我们只需前三个标签里面的数据和信息即可。
代码实现:
soup2=firearms_introduce[0]
########################################################################### 枪械介绍
_list1=soup2.select('div.areabd>div.hreodata>table>tbody>tr.item')
_list2=_list1[0].select('td')
str2=''
for i in range(len(_list2)):
if (i+1)%2==1:
str2+=_list2[i].get_text()+':'
else:
str2+=_list2[i].get_text()+'\n'
print(str2)
for i in range(1,len(_list1)):
_list3=_list1[i].select('td')
str2=_list3[0].get_text()+':'+(_list3[1].get_text()).strip('\n')
if len(str2)>35:
str2=str2[:35]+'\n'+str2[35:]
print(str2)
########################################################################### 枪械属性
soup3=firearms_introduce[1]
_list4=soup3.select('div.skilldata>table>tbody>tr')
_list5=_list4[0].select('th')
_list6=_list4[1].select('td')
for i in range(len(_list5)):
str1=_list5[i].get_text()+':'+_list6[i].get_text()
print(str1)
########################################################################### 武器伤害
soup4=firearms_introduce[2]
_list7=soup4.select('div.skilldata>table>tbody>tr')
list_1=_list7[0].select('td>strong')
str3=list_1[0].get_text()
str4=list_1[1].get_text()
_list8=_list7[1].select('td')
_list9=_list7[2].select('td')
for i in range(len(_list8)):
if i==0:
print(str3)
elif i==4:
print(str4)
str1=_list8[i].get_text()+':'+_list9[i].get_text()
print(str1)
运行结果:
通过对运行结果分析,我们可以知道AKM比M416好(除了射速慢),但AKM后坐力大,需要经常练习才能更好使用这把枪,这点在上面枪械介绍中讲到了。
2.最终代码
最终代码我已经上传到github上了,链接为:和平精英.py,有需要的可以下载。
3.总结
代码程序比较简单,希望那些大佬们不要嫌弃,刚开始学习Python的小白可以好好领悟一下,如果觉得这篇还可以的话,记得给我点一个小小的赞喔!