python request.get确实形成了正确的URL

时间:2015-09-14 07:33:55

标签: python html get python-requests

我尝试使用发送GET请求的python请求。但是,我发现request.get()形成的url不遵循文档。

以下是一个例子:

array(
    'name'=>'Date',
    'value'=>date_format(date_create($model->order_date), "d-m-Y "),
    ),

预期的网址应为:

import requests

root_web_address = 'http://www.amazon.com'
action_address = '/s/ref=nb_sb_noss'

get_url = root_web_address + action_address

input_1_value_unicode = unicode('search-alias=aps', 'utf-8')
input_2_value_unicode = unicode('asics', 'utf-8')

get_parameters = {'url':input_1_value_unicode, 'field-keywords':input_2_value_unicode}

r = requests.get(get_url, params = get_parameters)

print r.url

但是,打印r.url给了我:

http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=asics

为什么?

1 个答案:

答案 0 :(得分:1)

requests.get这里实际上是301重定向。并且响应对象的url属性包含最后重定向的URL,因此打印的是url。

对于中间网址,您可以这样做 -

print r.history[0].url

对于发送请求时使用的网址,您应该这样做 -

print r.request.url

查看以下文档以获取更多信息 -

  1. Requests QuickStart
  2. requests.Response.url
  3. requests.Response.history
  4. requests.request.url