本篇内容主要讲解“怎么使用Python采集王者最低战力信息”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Python采集王者最低战力信息”吧!
数据采集
请求URL:
https://www.sapi.run/hero/select.php
请求方式:
GET
参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
hero | 是 | string | 英雄名 |
type | 是 | string | 选aqq、awx、iqq、iwx |
请求示例
https://www.sapi.run/hero/select.php?hero=孙悟空&type=aqq
返回示例
{ "code": 200, "data": { "uid": "167", "name": "孙悟空", "alias": "齐天大圣-孙悟空", "platform": "安卓-扣扣区", "photo": "https://game.gtimg.cn/images/yxzj/img201606/heroimg/167/167.jpg", "area": "武强县", "areaPower": "3693", "city": "潮州市", "cityPower": "5501", "province": "天津市", "provincePower": "7274", "guobiao": "11404", "stamp": "1654640093", "updatetime": "2022/06/08 06:14:53", "clientIP": "119.0.0.126" }, "msg": " " }
下面,我们开始写代码。
获取数据
第一步,发送请求,获得数据。
import requests headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36' } hero_url = 'https://pvp.qq.com/web201605/herolist.shtml' response = requests.get(url=hero_url, headers=headers)
这段代码中,我们使用 Python 的
requests模块发送了一个 GET 请求,请求的 URL 为
https://pvp.qq.com/web201605/herolist.shtml,并且使用了
headers参数来设置请求头信息。请求头信息包括了
user-agent字段,用于指定浏览器的 User-Agent 信息。
请求返回的结果是一个
Response对象,我们可以使用
response.text属性来获取请求的响应内容。在这个例子中,我们使用了
response.json()方法来将响应内容转换为 JSON 格式,并将其存储在
response.text属性中。
response.encoding='gbk' heros = re.findall('alt=".*?">(.*?)</a>',response.text)[0:93]
这段代码中,我们使用 Python 的
re模块中的
findall()函数来查找 JSONP 回调函数的参数。
findall()函数可以返回一个列表,其中包含了所有匹配的子字符串。
在这个例子中,我们使用
findall()函数来查找 JSONP 回调函数的参数,并将其存储在
response.text变量中。然后,我们使用
[0:93]来获取第一个匹配的子字符串,并将其存储在
heros变量中。
需要注意的是,
findall()函数返回的子字符串列表中可能包含多个匹配的子字符串,因此我们需要使用
[0:93]来获取第一个匹配的子字符串。
解析数据
我们发现,我们得到了这样
英雄名字的数据,下面,我们就可以构建url,获取战力信息。
for hero in heros: print(hero) url = f'https://www.sapi.run/hero/select.php?hero={hero}&type=qq' res = requests.get(url) data = res.json()['data'] name = data['name'] area = data['area'] areaPower= data['areaPower'] city = data['city'] cityPower = data['cityPower'] province= data['province'] provincePower = data['provincePower'] platform= data['platform'] updatetime = data['updatetime']
这段代码中,我们使用 Python 的
requests模块发送了一个 GET 请求,请求的 URL 为
https://www.sapi.run/hero/select.php?hero={hero}&type=qq,并且使用了
json()方法将响应内容转换为 JSON 格式,并将其存储在
res.json()变量中。
请求返回的结果是一个
Response对象,我们可以使用
response.json()方法将响应内容转换为 JSON 格式,并将其存储在
res.json()变量中。
在这个例子中,我们使用了
res.json()变量来获取响应内容,并将其存储在
data变量中。然后,我们使用
name变量获取了英雄名称,使用
area变量获取了区域名字,使用
areaPower变量获取了区域战力,使用
city变量获取了市,使用
cityPower变量获取了市战力,使用
province变量获取了省份,使用
provincePower变量获取了省份战力,使用
platform变量获取了平台,使用
updatetime变量获取了更新时间。
保存数据
dit = { '英雄名称':name, '服务区':platform, '更新时间': updatetime, '铜牌区域':area, '铜牌分数': areaPower, '银牌区域':city, '银牌分数': cityPower, '金牌区域':province, '金牌分数':provincePower , }
这段代码是一个 Python 代码片段,它定义了一个字典,其中包含了一些英雄的信息,包括英雄名称、服务区、更新时间、铜牌区域、铜牌分数、银牌区域、银牌分数、金牌区域、金牌分数等。
下面就是数据的写入了。其实,把字典数值写入到csv文件里面,特别简单,只需呀四行代码就可以实现。
f = open('最低战力.csv', mode='a', encoding='utf-8_sig', newline='') csv_writer = csv.DictWriter(f, fieldnames=['英雄名称', '服务区', '更新时间', '铜牌区域', '铜牌分数', '银牌区域', '银牌分数', '金牌区域','金牌分数']) csv_writer.writeheader()
这段代码打开了一个名为
'最低战力.csv'的文件,并将其以追加模式打开。它还指定了文件的编码为 UTF-8 和行结束符为空字符串(
newline='')。
然后,代码创建了一个
csv.DictWriter对象,并将其与文件对象关联起来。
fieldnames参数指定了字典中的键和值的名称。
接下来,代码调用
writeheader()方法来写入表头。这个方法将字典中的键值对写入文件中,并将其作为表头。
写入字典数值。
csv_writer.writerow(dit)
这时候,我们就会在文件夹里面找到最低战力的csv文件,我们打开看看效果。