【python】+warframe警报任务查询(第一次写爬虫,大佬不要笑话)
本帖最后由 wushaominkk 于 2018-5-15 22:58 编辑背景说明:最近在玩国际服的星际战甲(warframe),因为里面的警报任务是动态刷新的,虽然有一些网站可以看,但是每次打开网页总觉得太麻烦了,于是就自己动手写了一个爬虫,差不多是边学边写,不好的地方请指出来,共同进步,谢谢。
必须用到的工具:
[*]一个可以抓包的浏览器,
[*]python 3.6环境,
[*]python编译器。
[*] 脑子(这不废话么,在看的哪个不是大佬)
开始:
数据来源:直接在游戏里面提取肯定是不现实的,上面也说了有很多提供这些信息的网站,经过筛选,确定网站(主要是因为是中文我看得懂才选的)http://wf.poedb.tw/,下图是我要的数据。
数据抓包:因为之前我也说了这个任务是动态的,所以我这里直接可以排除在源代码中去找我要的数据包,直接进行抓包,我用的360浏览器,直接按F12---network--clear(清除原来的包,一般也没有)--F5(刷新),我们得到下面的图。
数据分析:里面有很多的.css和.js以及.png的后缀的直接不用看,然后一个一个的去点开查看,然后就可以找到我们的目标,如下图,我们注意方框中的两个数据是一样的,红色的箭头也注意一下,data.php?t=all就是我们的要的数据。
提取数据:我们要的数据找到了,下面就是怎么把这些数据拿下来,我们点开data.php?t=all数据包的haders,里面可以看到链接地址。
代码编写:准备工作是多了点(不过是有必要的),不过我们现在开始吧(不准吐槽我的命名)。
需要的模块
import json
import time
import urllib.request
把数据拿到本地:
def getlist():
# 获取地址
weburl = 'http://wf.poedb.tw/data.php?t=all'
# 配置头信息
htmlheader = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
req = urllib.request.Request(url=weburl, headers=htmlheader)
# 获取url内容
html = urllib.request.urlopen(weburl)
data = html.read()
# 转换格式
data = data.decode('UTF-8')
# 得到一个包含警报,入侵,虚空裂缝,突袭,平原是不是白天,商人什么时间离开的字典
dict = json.loads(data)
return dict
说明一下,因为直接拿到的数据是json类型的,所以我们要把转换成python中的字典,方便处理,转换格式是为了让汉字显示出来。
既然拿到了数据我们就来处理一下吧。
def jingbao():
# 从字典中吧警报任务提取出来,取出来是一个列表
jb = getlist()['alerts_raw']
for name in jb:
# 分别取出列表的元素
xingqiu = name
ditu = name
renwu = name
xibie = name
ddengji = name
gdengji = name
ktime = name
jtime = name
wpjiangli = name
jinqian = name
# 获取本地时间戳
time_now = int(time.time())
# 得到时间戳差
cha = jtime - time_now
# 用求余的方式得到相差时间的秒数
miao = cha % 60
# 计算出有多少分钟
fenzhong = cha / 60
# 用求余的方式得到相差时间的分钟数
fenzhongd = fenzhong % 60
# 判读如果大于60分钟就求有多少小时
if fenzhong >= 60:
# 用整除的方式得到有多少小时
xiaoshi = fenzhong // 60
print(xingqiu + '(' + ditu + ')' + renwu + '任务:' + '\n 奖励物品:' + wpjiangli + '\n 现金奖励:' + jinqian)
print(' 怪物等级:' + str(ddengji) + '-' + str(
gdengji) + '\n 怪物系别:' + xibie)
print(' 剩余时间:' + str(int(xiaoshi)) + '小时' + str(int(fenzhongd)) + '分钟' + str(int(miao)) + '秒')
# 变量归零,免得影响其他数据
fenzhong = 0
xiaoshi = 0
fenzhongd = 0
下面调用函数就可以了
jingbao()
运行完成,放一张成果图,源代码也传上来,里面有一点变动,但是不影响,谢谢大家
huaizhu123 发表于 2018-11-16 21:25
最近也在玩,不多不懂大佬弄这个是干嘛,有没有什么方彪看懂的话
就是用来看报警的一个脚本,网上这样的网站很多的,我放在手机上,随时可以看有没有自己想要的奖励,有我就上线 。 Guozhi_s 发表于 2019-2-6 11:25
大佬 我也想写一个你这样的看警报的程序我已经在 “云乡”哪里申请到了 API 你可以教教我吗
我这个太简单了,就是抓的别人网站的数据的,本质就是一个爬虫 牛逼。。 又一位准备点燃神火的大佬,我等凡人仰望中 目前也在学Python 加油中 不是有个手机app么 厉害哎厉害 高举王座,送大佬上天 PY格式是什么意思 这个官方好像提供了api接口。。。 谢谢,刚好需要
页:
[1]
2