2015-11-02 119 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)