2014-08-28 73 views
0

我正在试验capatcha图像。我有一个capatcha.php在我的本地主机,它将生成一个图像,该图像将被放入表格保持会话在python中生效

这是我的python代码来获取图像,提取其中的文本并将它们发送回表单。最后将结果表单保存为html。

import os 
import requests 

p = requests.session() 
q = p.get('http://localhost/dhiraagu/Capatcha.php') 
with open('data/a.png', 'wb') as f: 
    f.write(q.content) 
os.system("tesseract C:\\Users\\Aiman\\Desktop\\Wataniya\\data\\a.png C:\\Users\\Aiman\\Desktop\\Wataniya\\data\\a") 
with open("data\\a.txt") as cap: 
    capData = cap.read() 
print("Capatcha line:"+capData) 
num = input("Please enter the number :") 
payload = { 
    'Code': capData, 
    'q': num 
} 

url = "http://localhost/dhiraagu/index.php" 
r = p.post(url, data=payload) 


with open("data\\log.html", "w") as file: 
    log = file.write(r.text) 

但现在这个工作。我在这里看不到问题。 :困惑:

编辑 我已经解决了通过将代码with requests.session() as s:线内:d

会不会有任何问题,如果我不发送“头”? ...

回答

0

您需要保存cookie,然后将它们发送到服务器。 我已经例如用于获取Cookie,但并不难扩展,以给他们:

>>> import urllib.request 
>>> import http.cookiejar 
>>> cj = http.cookiejar.CookieJar() 
>>> opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj)) 
>>> urllib.request.install_opener(opener) 
>>> reply = urllib.request.urlopen("http://google.com") 
>>> for cookie in cj: 
...  print(cookie) 

,这里是你的cookies :)

+0

我已经把一切都在一侧的'与实际要求做到了这一点.session()as s:' 它工作正常:D – 2014-08-29 11:17:46