在python中保持会话活着

时间:2014-08-28 11:34:12

标签: python session download keep-alive

我正在尝试使用capatcha图像。我在我的本地主机中有一个capatcha.php,它将生成一个图像,该图像将被放入表单中

这是我的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

如果我不发送'标题',会有任何问题吗? ...

1 个答案:

答案 0 :(得分: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)

这是你的饼干:)