请求 - GET取决于POST

时间:2015-11-28 12:56:25

标签: python post cookies get python-requests

我试图从一个网页上获取一些数据。此网页使用.Net。根据firebug,当我点击一个按钮时,它会发送两个请求。

POST请求中有信息。然后有一个GET请求获取我想要的信息。

我正在使用requests模块。我不知道如何让这两个请求一起工作。

我试过这个:

r = requests.post("https://example.com/vyber.aspx",data=_params) # _params is a dictionary obtained from Firebug
r = requests.get("https://example.com/vyber.aspx")
print r.content

但它不起作用(返回错误的HTML),因为这两个请求是独立的。我想我必须存储某种数据(可能是cookie或其他)来做GET请求。但我不知道如何。

我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

我是否需要使用session。 正如文档所说 -

  

Session对象允许您跨越某些参数   要求。它还会在所有请求中保留cookie   会话实例,并将使用urllib3的连接池。因此,如果   您正在向同一主机(底层TCP)发出多个请求   连接将被重用,这可能会导致重大连接   性能提升(参见HTTP持久连接)。

s = requests.Session()
r = s.get('http://httpbin.org/cookies', cookies={'from-my': 'browser'})

答案 1 :(得分:0)

您还可以添加发送标头以使其真实

ses = requests.session()
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36',
}
r = ses.post("https://example.com/vyber.aspx",data=_params, headers=headers)
r = ses.get("https://example.com/vyber.aspx", headers=headers)
print r

你必须检查你的参数是否像这样{" name_in_html" :" value_you_want'} 也有时网站等待接收另一个已经具有类似

的值的参数
<input type="TYPE" id="ID" name="NAME" value="SOMEVAL">

所以你必须添加{&#39; NAME&#39; :&#39; SOMEVAL&#39;}给你数据