王者荣耀五周年,带你入门Python爬虫基础操作( 二 )
文章插图
4.1.2.xpathXPath 是一门在 XML 文档中查找信息的语言 , 可用来在 XML 文档中对元素和属性进行遍历 。 更多语法操作可以查看() 。
由于本质过程上和bs4差不多 , 只是语法函数操作不太同 , 这里不做详细介绍 , 直接看代码了解下先 。
# xpath 解析from lxml import etreehtml = etree.HTML(resp.text)html_ul = html.xpath('//ul[@class="herolist clearfix"]')[0]html_lis = html_ul.xpath('./li')herolists = []for html_li in html_lis:herolist = {}herolist['英雄名称'] = html_li.xpath('./a/text()')[0]herolist['英雄详情页'] = html_li.xpath('./a/@href')[0]herolist['英雄头像'] = html_li.xpath('./a/img/@src')[0]herolists.append(herolist)1234567891011121314
4.2.json数据解析在请求的数据是json格式时 , 直接查看数据类型发现是str , 如下:
文章插图
我们可采用json.loads()和eval方法将其转化为列表的形式 , 该列表和上面html数据解析后的结果格式一样 。
import jsonjs = resp.text# json.loads() 处理li = json.loads(js)# 直接 eval() 处理lis = eval(js)1234567
文章插图
5.数据保存对于图片类数据 , 请求图片数据然后写入本地保存;对于文本数据表单 , 转化为dataframe类型存为excel文件(需要用到pandas库) 。
5.1.存储图片类数据我们在英雄列表中有英雄头像数据 , 这里演示将英雄头像数据存入本地 。
# 遍历数据解析中 英雄列表for li in herolists: # 获取英雄头像网页地址 # 如'//game.gtimg.cn/images/yxzj/img201606/heroimg/506/506.jpg'head_url = li['英雄头像']# 组合 https:url = f'https:{head_url}'# 获取该英雄名称 , 用于赋值给图片文件名称head_name = li['英雄名称']# 请求图片数据head_data = http://kandian.youth.cn/index/requests.get(url)# 设置存储图片的全路径head_path = f'D:\python\爬虫\王者荣耀\{head_name}.png'# 打开空文件写入图片数据open(head_path, 'wb').write(head_data.content)123456789101112131415
文章插图
5.2.文本数据表单存储import pandas as pd# 列表转化为dataframe类型df = pd.DataFrame(li)123
文章插图
# 由于数据中存在一些网页符号 , 作为 菜鸟的我只会用replace简单替换df['des1'] = df['des1'].str.replace('',' , ').str.replace('','').str.replace('
','')df['des2'] = df['des2'].str.replace('',' , ').str.replace('','').str.replace('
','')# 存为表格 , 页签取名为“装备数据信息list”df.to_excel(r'D:\python\爬虫\王者荣耀\道具表单数据.xlsx',index=False,sheet_name='装备数据信息list')12345
文章插图
6.你也来玩一玩标题中我们提到王者荣耀五周年 , 有102个英雄和326个皮肤 。 其实 , 在英雄列表中我们抓取的html数据中只有93个 , 如何获取全部的呢?大家可以参考json数据请求的方式去找一找 , 如何根据相关数据的特点(比如英雄头像地址里变动的其实是 英雄的id , 英雄详情页也是) 。
大家可以看看新英雄和新皮肤 , 如何爬取相关数据试试 。
6.1.英雄新皮肤数上线五年 , 一共93个英雄新出过皮肤 , 其中貂蝉、花木兰和孙悟空新增皮肤最多 , 高达5个!!
文章插图
在93个英雄中 , 大部分只新增过1个皮肤~
文章插图
6.2.新增皮肤上线时间从上线月份来看 , 1月是英雄上线高峰 , 这个和1月大部分为春节月有关 , 毕竟这款产品春节也是最赚钱的 。
文章插图
从上线年份来看 , 2015年其实10月底产品才上线 , 所以整体新增皮肤不多 , 16及17年游戏高速增长期吧 , 团队产能并没有明显提高?所以在18年之后 , 团队大了 , 新增皮肤蹭的飞涨!
文章插图
6.3.王者英雄产能2015年10月28日王者首发时 , 有33个英雄 , 大家熟悉的亚瑟、项羽、安琪拉等都是第一批 。 截止到现在 , 5年时间内新增英雄69个 。
从上线月份来看 , 2、8、11和1月份是新英雄出的最多的 , 为啥啊?
- 麒麟|荣耀新款,麒麟810+4800万超清像素,你还在犹豫什么呢?
- 荣耀V30|麒麟990+40W快充,昔日猛将彻底沦为清仓价?网友:太遗憾
- 赵明|与华为“离婚”后粉丝叫啥 新任CEO赵明首发声:做自己荣耀的骑士
- 信新信息技|荣耀逐步“搬家”:官方公众号主体由 “华为终端”变为 “荣耀终端”
- 刷新率|荣耀V40系列坐实,65W快充+120Hz刷新率,但缺失麒麟旗舰芯片?
- 系列|荣耀 V40系列疯狂遭曝光!外观暗示很明显,借鉴了?
- 导航|红米note9pro和荣耀X10这样选最适合!
- 超级快充|从3899到2629元,荣耀顶级旗舰二手价,麒麟990+40W快充!
- 华为|任正非谈华为荣耀“离婚”,卸下荣耀的荣耀,还剩多少荣耀
- 红米K30S|大学生玩王者荣耀的话,红米Note 9足够吗?