工具介绍

根据输入的标签,快速找出能够招募4星,5星干员的标签组合,比如刷出了 重装 | 男 | 支援 |术师 | 先锋 五个标签,输入效果如下:

注意:不支持高级干员和资深高级干员标签

使用环境

  1. 安装python3
  2. 安装模块: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("获取数据失败")

数据来源

公开招募工具

最新文章

  1. Discuz论坛安全加固浅析
  2. Service Broker应用(1):简介、同server不同DB间的数据传输
  3. oracle V$SESSION各个字段的含义
  4. Spring配置
  5. hadoop 运维
  6. ThroughRain第一次冲刺总结
  7. 【Xamarin报错】libpng warning : iCCP: Not recognizing known sRGB profile that has been edited
  8. 10、桥接模式(Bridge)
  9. .Net Core MVC 过滤器(一)
  10. Java-JMS Bug记录
  11. 从数据库读取数据并动态生成easyui tree构结
  12. React 记录(4)
  13. windows server 2012R2 故障转移集群配置
  14. SVN的Not authorized to open root of edit operation解决办法
  15. vue组件利用formdata图片预览以及上传
  16. IIS 集成模式 导致 AjaxPro 无法正常运行
  17. 2018-2019-2 网络对抗技术 20165318 Exp1 PC平台逆向破解
  18. linux安装vmware
  19. 学习笔记-AngularJs(二)
  20. 解决 java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()L的问题

热门文章

  1. hue创建的hdfs数据在hdfs无法删除的问题。
  2. 003-Python3-基础语法-运行方式、代码基础要求、运算符[算数运算符、比较运算符、赋值运算符、位运算符、逻辑运算符、成员运算符、身份运算符]、运算符优先级
  3. ubuntu连接多个realsense d435
  4. resources-plugin-2.6.pom.part.lock (没有那个文件或目录)
  5. EasyNVR摄像机网页无插件直播方案H5前端构建之:bootstrap弹窗功能的实现方案与代码
  6. kubernetes之Scheduler原理分析
  7. 【linux基础】如何配置ubuntu系统为静态IP地址
  8. cube-ui按钮配合toast单例模式应用
  9. WIN10设置notepad++默认打开txt文件
  10. Node.js实现PC端类微信聊天软件(一)