我有关于POST请求的以下详细信息
1)The URL: "http://kuexams.org/get_results"
2)Request body: "htno=001111505&ecode=kuBA3_Supply_Dec_2013".
我是通过分析HTTP流量得到的。然后我找到了这个指定这些值的站点,它重新生成了响应。 https://requestable.pieterhordijk.com/sSd7o
我需要知道如何制作与the site类似的内容。只需将Request主体发布到URL并返回数据以进行解析。
P.S:我尝试了多种POST方法来访问此网站http://kuexams.org/results/3GKZ-D_QBHLWXrg7lZ2IGoKBI7lGfpSK37GNoykJ8k5UerNGYn21FN6w_R5XZ8IQVUHRb8ZYVwq-zN4BhIjusQ,,/ugresults/ug 这就是我累了。它采用了不同的方法,但却失败了。
import mechanize
import cookielib
import urllib
import logging
import sys
import re
br = mechanize.Browser()
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=3)
br.addheaders = [('User-agent', 'Firefox')]
r = br.open('http://kuexams.org/results/06JZ4SYmTV97s4oROGuLYglPFH3XxJKAunIilJkDBV0gBxSU6YVJ_kXRL0UZb3cIjz9aFdnkYaE-T_S3ubaXPg,,/ugresults/ug')
scrape = r.read()
#print(scrape)
pattern = re.compile('=5&code=(.{5})\'')
img = pattern.findall(scrape)
print(img)
imgstr = str()
imgstr = img[0]
print(imgstr)
br.select_form("appForm")
br.form["htno"] ='001111441'
br.form["entered_captcha"] = imgstr
response = br.submit()
print response.read()
br.back()
答案 0 :(得分:2)
我可以看到帖子请求没有使用任何cookie或验证码细节。它只实现了客户端,所以不需要存储cookie或获取验证码,因此这段代码对您有用。 使用请求它的酷炫且易于使用。
import requests
url='http://kuexams.org/get_results'
payload={'htno': '001111441', 'ecode': 'kuBA2_Supply_Dec_2013'}
headers={"User-Agent": "Some Cool Thing"}
r=requests.post(url,headers=headers,data=payload)
print r.content
请注意,服务器不接受请求的默认User-agent,因此我添加了自定义的一个,但不会接受POST请求或者可能会提供Forbidden Error。