王者荣耀五周年,带你入门Python爬虫基础操作( 二 )


王者荣耀五周年,带你入门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)12345678910111213144.2.json数据解析在请求的数据是json格式时 , 直接查看数据类型发现是str , 如下:
王者荣耀五周年,带你入门Python爬虫基础操作文章插图
我们可采用json.loads()和eval方法将其转化为列表的形式 , 该列表和上面html数据解析后的结果格式一样 。
import jsonjs = resp.text# json.loads() 处理li = json.loads(js)# 直接 eval() 处理lis = eval(js)1234567
王者荣耀五周年,带你入门Python爬虫基础操作文章插图
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
王者荣耀五周年,带你入门Python爬虫基础操作文章插图
5.2.文本数据表单存储import pandas as pd# 列表转化为dataframe类型df = pd.DataFrame(li)123
王者荣耀五周年,带你入门Python爬虫基础操作文章插图
# 由于数据中存在一些网页符号 , 作为 菜鸟的我只会用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

王者荣耀五周年,带你入门Python爬虫基础操作文章插图
6.你也来玩一玩标题中我们提到王者荣耀五周年 , 有102个英雄和326个皮肤 。 其实 , 在英雄列表中我们抓取的html数据中只有93个 , 如何获取全部的呢?大家可以参考json数据请求的方式去找一找 , 如何根据相关数据的特点(比如英雄头像地址里变动的其实是 英雄的id , 英雄详情页也是) 。
大家可以看看新英雄和新皮肤 , 如何爬取相关数据试试 。
6.1.英雄新皮肤数上线五年 , 一共93个英雄新出过皮肤 , 其中貂蝉、花木兰和孙悟空新增皮肤最多 , 高达5个!!
王者荣耀五周年,带你入门Python爬虫基础操作文章插图
在93个英雄中 , 大部分只新增过1个皮肤~
王者荣耀五周年,带你入门Python爬虫基础操作文章插图
6.2.新增皮肤上线时间从上线月份来看 , 1月是英雄上线高峰 , 这个和1月大部分为春节月有关 , 毕竟这款产品春节也是最赚钱的 。
王者荣耀五周年,带你入门Python爬虫基础操作文章插图
从上线年份来看 , 2015年其实10月底产品才上线 , 所以整体新增皮肤不多 , 16及17年游戏高速增长期吧 , 团队产能并没有明显提高?所以在18年之后 , 团队大了 , 新增皮肤蹭的飞涨!
王者荣耀五周年,带你入门Python爬虫基础操作文章插图
6.3.王者英雄产能2015年10月28日王者首发时 , 有33个英雄 , 大家熟悉的亚瑟、项羽、安琪拉等都是第一批 。 截止到现在 , 5年时间内新增英雄69个 。
从上线月份来看 , 2、8、11和1月份是新英雄出的最多的 , 为啥啊?