2014-08-28 4 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) 

Но это сейчас работает. Я не вижу здесь проблемы. : Путать:

EDIT Я решил, что, поставив код внутри with requests.session() as s: линии: D

И будет ли проблема, если я не послать «заголовок»? ...

ответ

0

Вам необходимо сохранить cookies, а затем отправить их на сервер. Я пример для получения куки, но не трудно расширить это, чтобы отправить их:

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

и вот ваше печенье :)

+0

Я на самом деле сделал это, поставив все на стороне 'запросы .session() as s: ' И это отлично работает: D –