黑板客爬虫闯关解答(更新到第五关)

初学爬虫,又没什么想爬的东西,正好看到这个闯关就做了一下。截至今天,游戏作者更新到第五关。

前面4关都比较简单,具体请搜索网上的教程。比如这里有个详细的。

我的代码放在 GitHub:fuyufjh/crawler_ex_answer

说一下第五关:

第五关同样是猜数字,只比第三关多了一个验证码。我们只要把第三关的代码复制过来改改就好。

如果不嫌弃准确率低,可以用 Google 家的 OCR 库 tesseract,Python 下有一个封装库 pytesseract。

作者的验证码对字母做了一个小角度的旋转,这个干扰很大(看来训练数据里没有歪的 sample),导致识别成功率不高,大约20%。

1
2
3
urllib.request.urlretrieve(captcha_image_url, 'captcha.png')
vcode_img = Image.open('captcha.png')
vcode = pytesseract.image_to_string(vcode_img, lang='eng')

有些识别一看就是错误的,就不去发 post 请求验证了。

1
2
if not re.match(r'[A-Z]{4}$', vcode):
continue

完整代码在这里

为了提高准确率,我寻思可以用 SIFT 特征匹配字母(因为这个验证码字体都一样,只有旋转变换)。如果做了再更新。