如何使用Requests库生成带有参数的POST请求?

2024-04-24 22:35:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将POST请求发送到以下URL->

http://nhb.gov.in/OnlineClient/categorywiseallvarietyreport.aspx?&menu.Menu=11

如果您转到该站点,则会有诸如“类别”、“日期”和“状态”等字段。因此,当我填写字段并单击Search按钮并检查Network选项卡时,我得到了发送POST请求所需的参数。你知道吗

所以,我制作了一个包含键、值对的字典,并发送了一个post请求。这是我的代码->

import requests

data = {'ctl00$ContentPlaceHolder1$scrpMan':'ctl00$ContentPlaceHolder1$UpdatePanel9013|ctl00$ContentPlaceHolder1$btnSearch' ,
    '__VIEWSTATE':'/wEPDwUKMTMzMzg0OTIwNQ9kFgJmD2QWBAIFDxYCHgVzdHlsZQUtYmFja2dyb3VuZC1pbWFnZTp1cmwoLi4vYXNzZXRzL2ltZy9sb2dvLnBuZyk7ZAIHD2QWAgIBD2QWAgIBD2QWAmYPZBYKAgcPEA8WBh4NRGF0YVRleHRGaWVsZAUIQ2F0Z05hbWUeDkRhdGFWYWx1ZUZpZWxkBQhjYXRnY29kZR4LXyFEYXRhQm91bmRnZBAVBA9TZWxlY3QgQ2F0ZWdvcnkHRkxPV0VSUwZGUlVJVFMKVkVHRVRBQkxFUxUEATABNAExATIUKwMEZ2dnZ2RkAg0PEA8WBh8BBQpDZW50cmVOYW1lHwIFDENlbnRyZU51bWJlch8DZ2QQFR4JQUhNRURBQkFECEFNUklUU0FSBkJBUkFVVAlCZW5nYWx1cnUGQkhPUEFMDEJIVUJBTkVTSFdBUgpDSEFORElHQVJIB0NIRU5OQUkIREVIUkFEVU4FREVMSEkIR0FO…FZBUkFOQVNJFR4BMQIzMgIzNgEyATMBNAE3AjE1AjM0ATgBOQIxMAIxMQIxMgIyMgE2AjM5AjE0ATUCMTYCMjMCMTcCNDACMjQCMzUCMjgCMTgCMTkCMjACNDEUKwMeZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZGQCFw8PZBYCHgdvbmNsaWNrBTVzZWxlY3RBbGxDZW50ZXIoJ1N5c3RlbS5XZWIuVUkuV2ViQ29udHJvbHMuTGlzdEJveCcpO2QCGQ8PZBYCHwQFNVJlbW92ZUFsbENlbnRlcignU3lzdGVtLldlYi5VSS5XZWJDb250cm9scy5MaXN0Qm94Jyk7ZAIjDw8WAh4HVmlzaWJsZWhkZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAQUpY3RsMDAkQ29udGVudFBsYWNlSG9sZGVyMSRMc2JveENlbnRlckxpc3QVB5GC6UfPXNBmxBLvA2devnEGKA==',
    '__VIEWSTATEGENERATOR':'DBC76A8E',
    'ctl00$ContentPlaceHolder1$drpCategoryName':'4',
    'ctl00$ContentPlaceHolder1$LsboxCenterList':'1',
    'ctl00$ContentPlaceHolder1$txtdate':'10/01/2019',
    '__ASYNCPOST':'true',
    'ctl00$ContentPlaceHolder1$btnSearch':'Search'}

r = requests.post(url = 'http://nhb.gov.in/OnlineClient/categorywiseallvarietyreport.aspx?&menu.Menu=11', data = data)

print(r.text)

当我运行脚本时,我收到一个错误

179|error|500|The page is performing an async postback but the ScriptManager.SupportsPartialRendering property is set to false. Ensure that the property is set to true during an async postback.|

如果我尝试删除一些参数,我会收到一个只给出页面源的响应。你知道吗

我想收到回复与任何类别的价格为所有国家和任何日期。(在我填写字段并点击搜索按钮后,将显示一个表格。)

是不是我做错了什么?你知道吗


Tags: ingthttpdataispostgovmenu
1条回答
网友
1楼 · 发布于 2024-04-24 22:35:59

您需要添加头以使请求生效。我对它进行了测试,只需添加用户代理即可:

import requests

headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:64.0) Gecko/20100101 Firefox/64.0'
}

data = {
  'ctl00$ContentPlaceHolder1$scrpMan': 'ctl00$ContentPlaceHolder1$UpdatePanel9013|ctl00$ContentPlaceHolder1$btnSearch',
  '__EVENTTARGET': '',
  '__EVENTARGUMENT': '',
  '__VIEWSTATE': '/wEPDwUKMTMzMzg0OTIwNQ9kFgJmD2QWBAIFDxYCHgVzdHlsZQUtYmFja2dyb3VuZC1pbWFnZTp1cmwoLi4vYXNzZXRzL2ltZy9sb2dvLnBuZyk7ZAIHD2QWAgIBD2QWAgIBD2QWAmYPZBYKAgcPEA8WBh4NRGF0YVRleHRGaWVsZAUIQ2F0Z05hbWUeDkRhdGFWYWx1ZUZpZWxkBQhjYXRnY29kZR4LXyFEYXRhQm91bmRnZBAVBA9TZWxlY3QgQ2F0ZWdvcnkHRkxPV0VSUwZGUlVJVFMKVkVHRVRBQkxFUxUEATABNAExATIUKwMEZ2dnZ2RkAg0PEA8WBh8BBQpDZW50cmVOYW1lHwIFDENlbnRyZU51bWJlch8DZ2QQFR4JQUhNRURBQkFECEFNUklUU0FSBkJBUkFVVAlCZW5nYWx1cnUGQkhPUEFMDEJIVUJBTkVTSFdBUgpDSEFORElHQVJIB0NIRU5OQUkIREVIUkFEVU4FREVMSEkIR0FOR0FUT0sIR1VXQUhBVEkJSFlERVJBQkFEBkpBSVBVUgVKQU1NVQdLT0xLQVRBCUxBU0FMR0FPTgdMVUNLTk9XBk1VTUJBSQZOQUdQVVIGTkFTSElLBVBBVE5BClBJTVBBTEdBT04EUFVORQZSQUlQVVIGUkFOQ0hJBlNISU1MQQhTUklOQUdBUgpUUklWRU5EUlVNCFZBUkFOQVNJFR4BMQIzMgIzNgEyATMBNAE3AjE1AjM0ATgBOQIxMAIxMQIxMgIyMgE2AjM5AjE0ATUCMTYCMjMCMTcCNDACMjQCMzUCMjgCMTgCMTkCMjACNDEUKwMeZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZGQCFw8PZBYCHgdvbmNsaWNrBTVzZWxlY3RBbGxDZW50ZXIoJ1N5c3RlbS5XZWIuVUkuV2ViQ29udHJvbHMuTGlzdEJveCcpO2QCGQ8PZBYCHwQFNVJlbW92ZUFsbENlbnRlcignU3lzdGVtLldlYi5VSS5XZWJDb250cm9scy5MaXN0Qm94Jyk7ZAIjDw8WAh4HVmlzaWJsZWhkZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAQUpY3RsMDAkQ29udGVudFBsYWNlSG9sZGVyMSRMc2JveENlbnRlckxpc3QVB5GC6UfPXNBmxBLvA2devnEGKA==',
  '__VIEWSTATEGENERATOR': 'DBC76A8E',
  'ctl00$ContentPlaceHolder1$drpCategoryName': '4',
  'ctl00$ContentPlaceHolder1$LsboxCenterList': '1',
  'ctl00$ContentPlaceHolder1$txtdate': '10/01/2019',
  '__ASYNCPOST': 'true',
  'ctl00$ContentPlaceHolder1$btnSearch': 'Search'
}

response = requests.post('http://nhb.gov.in/OnlineClient/categorywiseallvarietyreport.aspx?&menu.Menu=11', data=data, headers=headers)
print(response.text)

相关问题 更多 >