用python模拟aspx表单请求

2024-06-16 12:05:24 发布

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

我正试图从这个站点模拟aspx表单的工作-http://noidajalonline.com/NOIDAJAL/Consumer.aspx

但是有一些问题-在第一个post请求中哪个响应应该包含表单中某个select元素的值。出于某种原因,我得到了这样的回应-'0 | error | 500 | |'。在

为什么会发生这种事?这里还有我试图从浏览器-http://puu.sh/kfcN1/c7b3b991fb.png使用这个aspx表单时的相同请求的屏幕截图 下面是我的代码:(它是Python2,但我认为它也应该与Python3一起运行)。在

#! python2
import requests
from lxml.html import fromstring

s = requests.Session()

main_search_html = s.get('http://www.noidajalonline.com/NOIDAJAL/Consumer.aspx').text
main_search = fromstring(main_search_html)
view_state = main_search.xpath('//input[@name="__VIEWSTATE"]/@value')[0]
event_validation = main_search.xpath('//input[@name="__EVENTVALIDATION"]/@value')[0]

payload = {
    'ctl00$ScriptManager1' :     'ctl00$ContentPlaceHolder1$UpdatePanel1|ctl00$ContentPlaceHolder1$ddlsector',
    '__EVENTTARGET' : 'ctl00$ContentPlaceHolder1$ddlsector',
    '__EVENTARGUMENT' : '',
    '__LASTFOCUS' : '',
    '__VIEWSTATE' : view_state,
    '__EVENTVALIDATION' : event_validation,
    'ctl00$ContentPlaceHolder1$ddlsector' : '01',
    'ctl00$ContentPlaceHolder1$txtflatno' : '',
    'ctl00$ContentPlaceHolder1$txtCons_no' : '',
    '__ASYNCPOST' : 'true',
}

post = s.post('http://www.noidajalonline.com/NOIDAJAL/Consumer.aspx', data = payload)
print(post.text) # Here i've got an error in response '0|error|500||'

Tags: comhttp表单searchconsumermainhtmlerror
1条回答
网友
1楼 · 发布于 2024-06-16 12:05:24

太简单了!此aspx表单只需要请求头中的“用户代理”。 所以,我把其中一行改成这样:

post = s.post('http://www.noidajalonline.com/NOIDAJAL/Consumer.aspx', data = payload, headers = {
        'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36'
    }
)

相关问题 更多 >