这个验证码的逻辑有什么问题?

时间:2015-11-02 22:32:32

标签: python python-requests captcha imagedownload

首先非常抱歉在标题中解释明确的问题。让我们开始吧;

我需要以以编程方式方式下载this验证码图片。

import grab, requests, urllib

root_url = 'https://e-okul.meb.gov.tr/'
g = grab.Grab()
g.go(root_url)
e = g.doc.select('//*[@id="image1"]')
captcha_url = root_url + e.attr('src')
img = urllib.request.urlopen(captcha_url)
localFile = open('captcha.jpg', 'wb')
localFile.write(img.read())
localFile.close()

And the result is this.

当我以众所周知的方式手动下载图像时将图像另存为..

没有问题。

有没有机会以我真正需要的方式下载此验证码?

2 个答案:

答案 0 :(得分:1)

验证码图像依赖于cookie来填充图像上显示的值。

您应该使用加载主页的相同Grab对象来下载验证码图像。

试试这个:

import grab, requests, urllib

root_url = 'https://e-okul.meb.gov.tr/'
g = grab.Grab()
g.go(root_url)
e = g.doc.select('//*[@id="image1"]')
captcha_url = root_url + e.attr('src')
resp = g.go(captcha_url)
localFile = open('captcha.jpg', 'wb')
localFile.write(resp.body)
localFile.close()

它为我生成了一个包含正确字符的文件。

答案 1 :(得分:0)

更多pythonic文件写作:

import grab, requests, urllib

root_url = 'https://e-okul.meb.gov.tr/'
g = grab.Grab()
g.go(root_url)
e = g.doc.select('//*[@id="image1"]')
captcha_url = root_url + e.attr('src')
resp = g.go(captcha_url)

with open('captcha.jpg', 'wb') as localFile
    localFile.write(resp.body)