内容简介:教你用python撸走《百万英雄》《冲顶大会》奖金。
最近这类答题app比较火,我的同事 wangtonghe 为开源社区贡献了他的 python 代码。以下文章为他的思路,我只做了部分整理发布于掘金社区,分享给大家。
- 起因
看了 《程序员如何玩转《冲顶大会》?》 大受启发,不过弱点很多,需要使用付费的OCR接口、再open到百度搜索答案,我们等待加载并且寻找答案的时候,已经错失了好的机会,刚好前几天研究了下微信跳一跳的辅助,正好可以用上。
-初步思路
思路很明确,把答案截图pull过来,通过PYTHON OCR 库进行识别成文字后再放到百度搜索。匹配出现率最频繁的词语,记过几番尝试后,一些容易搜索的问题还是是可以搜索大部分答案的。
- 尝试
目前它是手动的,也就是说每次答案出现,手动执行脚本返回答案。同样由于个别题目原因(如某个词有多少笔画)虽然不是百分之百的成功率,但是一般都能进入决赛+一张复活卡基本妥妥‘吃鸡’,下面是吃鸡截图:
- 技术栈
实现语言python,用到的类库如下:
- PIL
- pytesseract(图片识别库)
- BeautifulSoup(页面解析)
文字识别引擎需单独安装,参见 Python人工智能之图片识别,Python3一行代码实现图片文字识别 以及 mac上文字识别 Tesseract-OCR for mac
主体代码如下:
import os from PIL import Image import pytesseract from urllib.request import urlopen import urllib.request from bs4 import BeautifulSoup DEFAULT_WIDTH = 720 DEFAULT_HEIGHT = 1280 def main(): # 720*1280分辨率坐标 left_top_x = 30 left_top_y = 200 right_bottom_x = 680 right_bottom_y = 380 # 1. 截图 os.system('adb shell screencap -p /sdcard/answer.png') os.system('adb pull /sdcard/answer.png answer.png') # 2. 截取题目并文字识别 image = Image.open('answer.png') crop_img = image.crop((left_top_x, left_top_y, right_bottom_x, right_bottom_y)) crop_img.save('crop.png') text = pytesseract.image_to_string(crop_img, lang='chi_sim') print(text) # 3. 去百度知道搜索 text = text[2:] # 把题号去掉 # text = '一亩地大约是多少平米' wd = urllib.request.quote(text) url = 'https://zhidao.baidu.com/search?ct=17&pn=0&tn=ikaslist&rn=10&fr=wwwt&word={}'.format( wd) print(url) result = urlopen(url) body = BeautifulSoup(result.read(), 'html5lib') good_result_div = body.find(class_='list-header').find('dd') second_result_div = body.find(class_='list-inner').find(class_='list') if good_result_div is not None: good_result = good_result_div.get_text() print(good_result.strip()) if second_result_div is not None: second_result = second_result_div.find('dl').find('dd').get_text() print(second_result.strip()) if __name__ == '__main__': main()
文字识别需经训练,训练越多结果越准。
我把代码放到github上了,可围观 hq-answer-assist
- 结语
要想实现更智能化,有个思路是不停的截图(1秒一次),一旦截到答题页(可以用答题页的色差来做),做文字识别后百度,将百度后的结果与选项做比较,哪个出现次数最多哪个就是最佳答案,这里可以加个判断,如果特别确定直接模拟点击事件选答案,不确定就手工。
有同学提到分析请求,也是个思路,后续可以研究。
欢迎探讨其他更好的实现方式。
以上所述就是小编给大家介绍的《教你用python撸走《百万英雄》《冲顶大会》奖金。》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 用Python搭建“冲顶大会”外挂,王思聪们还舍得撒币吗?
- 微软给中国白帽黑客发137万奖金
- 别人家的公司:华为发放 20 亿奖金
- 顶尖对冲基金 | 机器学习量化研究招聘(底薪50万起+奖金)
- 阿里巴巴开工红包线上随机抽 还有彩票最高奖金1000万元
- 100万奖金啊!我从未如此羡慕会用数据分析的人…
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Hibernate
James Elliott / O'Reilly Media, Inc. / 2004-05-10 / USD 24.95
Do you enjoy writing software, except for the database code? Hibernate:A Developer's Notebook is for you. Database experts may enjoy fiddling with SQL, but you don't have to--the rest of the appl......一起来看看 《Hibernate》 这本书的介绍吧!