2015-11-02 38 views
-1

首先真的很抱歉没有解释问题明确标题。所以我们开始吧。这个验证码的逻辑有什么问题?

我需要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.

当我用手动的很已知的方式保存图像下载图像..

是没有问题的。

是否有机会以我实际需要的方式下载此验证码?

+1

我看着这两个图片和他们似乎罚款。究竟是什么问题? – RobertB

+0

让我解释一下更简单的方法;其实我只需要用python在这个网站下载验证码[https://e-okul.meb.gov.tr](https://e-okul.meb.gov.tr)。当我试图用python下载验证码时,它像第二个链接那样下载验证码。我想当你看看第一个链接时,验证码也没有任何数字。请首先访问[https://e-okul.meb.gov.tr](https://e-okul.meb.gov.tr)并再次检查,您会看到不同之处。 –

+0

你为什么需要*下载验证码? – Meier

回答

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() 

它产生与它正确的字符为我的文件。

+0

它工作。你可以猜到这是一个学校管理系统。土耳其的所有正规学校都使用这个系统。其实这是一种CMS没有什么不同。我的计划基于机器学习,旨在提高学生的成功率。所以我需要一些数据。他们(e-okul)不提供任何API或服务。我需要解决验证码以废弃数据。无论如何真的非常感谢它。 –

0

更Python写文件有:

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)