《明日方舟》Python版公开招募工具
工具介绍
根据输入的标签,快速找出能够招募4星,5星干员的标签组合,比如刷出了 重装 | 男 | 支援 |术师 | 先锋 五个标签,输入效果如下:
注意:不支持高级干员和资深高级干员标签
使用环境
- 安装python3
- 安装模块:requests、BeautifulSoup4
代码
import requests, sys, bs4, itertools
all_tags = set()
def parseData(data):
worker_infos = []
bsObj = bs4.BeautifulSoup(data, "html.parser")
details = bsObj.findAll("div",{"class": "contentDetail"})
for detail in details:
if u"公开招募" not in detail.attrs["data-param1"]:
continue
name = detail.find("a").attrs["title"].strip()
profes = detail.attrs["data-param1"].split(",")[0].strip()
sex = detail.attrs["data-param1"].split(",")[1].strip()
star = detail.attrs["data-param2"].strip()
tags = set()
for tag in detail.findAll("span", {"class": "tagText"}):
tags.add(tag.getText().strip())
all_tags.add(tag.getText().strip())
tags.add(profes)
tags.add(sex)
all_tags.add(profes)
all_tags.add(sex)
info = [tags, star, "%s(%s星)" % (name, star)]
worker_infos.append(info)
return worker_infos
def printTip():
tip = "\n可选标签:\n"
count = 0
for tag in all_tags:
tip = tip + tag + " | "
count += 1
if count % 9 == 0:
tip += "\n"
tip += "\n"
print(tip)
def checkTags(tags):
for tag in tags:
if tag not in all_tags:
print("\n" + tag + " 为无效标签")
def getCombs(tags):
combs = []
for i in range(len(tags)):
for iter in itertools.combinations(tags, i + 1):
combs.append(set(iter))
return combs
def getWorkers(tags, worker_infos):
ret = []
combs = getCombs(tags)
for comb in combs:
workers = []
over4 = True
for worker in worker_infos:
if comb <= worker[0]:
if int(worker[1]) == 4 or int(worker[1]) == 5:
workers.append(worker)
elif int(worker[1]) == 3:
over4 = False
if over4 == True and len(workers) > 0:
ret.append([comb, workers])
return ret
def printWorkers(workers):
for worker in workers:
tip = "\n| "
for tag in worker[0]:
tip = tip + tag + " | "
tip += "可以招募以下干员:\n"
for info in worker[1]:
tip = tip + info[2] + "\n"
print(tip)
url = "http://wiki.joyme.com/arknights/公开招募工具"
res = requests.get(url)
if res.status_code == requests.codes.ok:
infos = parseData(res.text)
printTip()
while True:
input_tags = input("请输入标签,使用空格隔开:\n").split()
checkTags(input_tags)
workers = getWorkers(input_tags, infos)
if len(workers) > 0:
printWorkers(workers)
else:
print("不能招聘高星干员")
print("--------------------------------------\n")
else:
print("获取数据失败")
数据来源
《明日方舟》Python版公开招募工具的更多相关文章
- 汉语拼音转换工具(Python 版)
汉语拼音转换工具(Python 版) http://pypinyin.readthedocs.org/en/latest/
- python入门科普IDE工具和编译环境
应友人之邀,今天来讲述python的一些入门内容.本次讲解的并不是语法或者某个模块. python下载安装 大多数 Linux 发行版在默认安装的情况 ...
- pyDes 实现 Python 版的 DES 对称加密/解密--转
https://my.oschina.net/leejun2005/blog/586451 手头有个 Java 版的 DES 加密/解密程序,最近想着将其 Python 重构下,方便后续脚本解析,捣鼓 ...
- 移动端自动化测试Appium 从入门到项目实战Python版☝☝☝
移动端自动化测试Appium 从入门到项目实战Python版 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 说到APP自动化测试,Appium可是说是非常流 ...
- Python的包管理工具
Python的包管理工具 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.为什么使用包管理 Python的模块或者源文件直接可以复制到目标项目目录中,就可以导入使用了. 但是为了 ...
- 北京大学公开课《数据结构与算法Python版》
之前我分享过一个数据结构与算法的课程,很多小伙伴私信我问有没有Python版. 看了一些公开课后,今天特向大家推荐北京大学的这门课程:<数据结构与算法Python版>. 课程概述 很多同学 ...
- 尖端之作看逐浪-Zoomla!逐浪CMS python版发布
免费下载:https://www.z01.com/down/3723.shtml Python是跻身于当代IT世界最流行和代码最高效的编程语言之一. 带着对技术的卓越追求.对客户的承诺.对品质的极致追 ...
- 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL
周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...
- 数据结构:顺序表(python版)
顺序表python版的实现(部分功能未实现) #!/usr/bin/env python # -*- coding:utf-8 -*- class SeqList(object): def __ini ...
随机推荐
- Unity制作出《超级马里奥》的2D和3D混合效果
现在来做点别的东西.Nintendo Switch上刚推出的<超级马里奥>中,有一些关卡混合了2D和3D的画面,这种效果十分让人印象深刻.如何在Unity中实现这个效果呢? 正常情况下,摄 ...
- 6条shell小技巧,让脚本显得不再业余【转】
如何能让自己的shell显得不那么业余?下面6点实践一定有用. 画外音:本篇文章源自Google的一篇实践,抽取了部分1分钟能读完的内容,加入了一些分析. 一.以下面的语句开场 set -o noun ...
- 【JavaScript】frame跨域访问元素
什么是跨frame访问元素呢?比如main.html中有如下代码: <frameset cols="50%,*"> <frame src="frame1 ...
- python做上位机
参考文章: https://blog.csdn.net/dgut_guangdian/article/details/78391270 https://www.cnblogs.com/lanceyu/ ...
- 字典的key都可以是什么
一个对象能不能作为字典的key,就取决于其有没有__hash__方法.所以所有python自带类型中,除了list.dict.set和内部至少带有上述三种类型之一的tuple之外,其余的对象都能当ke ...
- delimiter关键字
默认的sql语句以分号";"表示结束.mysql解释器每遇到一个分号,执行一段语句.可以通过delimiter更改语句结束符 mysql>delimiter &&am ...
- Linux CentOS7 下无图形界面安装Oracle11G R2版本
01,系统 Centos7 数据库版本 Oracle_11gR2 ,以及硬件要求 内存不能小于 1G,可用硬盘不小于8G Swap分区空间不小于2G grep MemTotal /proc/memin ...
- 使用pprof调试go程序
使用pprof调试go程序 pprof可以用来调试go程序,在go中有两个库可以使用,1. net/http/pprof 2. runtime/pprof 方法1 - net/http/pprof 测 ...
- 修改Window服务器虚拟内存位置
系统采用的是windows server2008操作系统,硬件部门在分配磁盘的时候C盘只有50G,其中虚拟内存就占用了30G,再除去操作系统占用空间,可用自由支配空间较小,会出现在部分异常情况下C盘占 ...
- 【NPDP笔记】第七章 产品生命周期管理
7.1产品生命周期管理 7.1.1 产品生命周期简介 阶段 开发 引入 Introduction 成长 Growth 成熟 Maturity 衰退 Decline 生命周期变短 客户有更多需求 竞 ...