如何获取题目
2、题目图片有了,怎么转换成文字形式呢?那就要用到OCR这种操作。与此有关比较常见的Python模块是pytesseract,但我推荐百度云的通用文字识别。因为速度上快很多,所以我就接入了百度云的API进行文字识别,而且每天可以调用500次,对于我们来说是完全足够的。而且申请也很简单,只要正常地注册一个百度的账号,按着里面的技术文档做就行了。
3、实现了上面两个步骤,这个题目的文本形式就得到了。虽然看上去比较麻烦,但在运行过程中还是非常快的。至少比人的打字的速度和准确度要高,毕竟电脑不会紧张。
如何搜索题目
1、因为搜索引擎的域名命名都是有规律的比如百度知道和搜狗知识的域名,我们发现这个规律以后就可以开始搜索了。
https://zhidao.baidu.com/search?ct=17&pn=0&tn=ikaslist&rn=10&fr=wwwt&word=关键词
https://www.sogou.com/sogou?query=关键词
2、我们获得题目文本后,就可以把关键词换成题目,进行搜索。可以使用requests、bs4等模块获取到页面返回的相关信息。
如何获取答案
目前我所知的有四种方法可以获得准确性高的结果。
1、通过返回页面的答案摘要。源代码里面能很容易地找到对应的文本信息和位置,然后使用BeautifulSoup方法找到相应的位置,并获取文本信息。(耗时为3.3~4.5秒)
2、通过返回的关键词。使用搜索引擎时,返回的页面会有部分红色标注的关键字。获取这些关键字可以帮助我们更快找到答案。(耗时为3.3~4.5秒,但有时关键词不是很切题)
3、通过返回的相关结果的数量。这个比较特殊,因为输入的文本格式是:题目+某一个答案,根据返回的相关结果的数量(下图红色标注处)。所以下面这道题的答案是第二个,因为返回的结果数量最多。(这个方法我没有实践过)
4、推荐方法:使用selenium框架。它可以模拟人进行浏览器的操作。在获得问题后,会自动输入题目,自动按下搜索,非常快速,而且你能看到以上这三点显示的全部信息。(耗时为2.2~3.8秒)
当然了,消耗的时间和个人的电脑以及网络状况是有关的(对,就是有人可以更快的意思(~ ̄ ̄)~)。
神秘的最后一段:
...
...
...
领取专属 10元无门槛券
私享最新 技术干货