我试图从这个网站模拟aspx表单的工作- http://noidajalonline.com/NOIDAJAL/Consumer.aspx
但是有一些问题-在第一个post请求哪个响应应该包含表单中选择元素之一的值。由于某些原因,我在响应中得到这个文本- '0|error|500||'。
为什么会发生这种事?这里也有同样的请求的屏幕截图,当我试图使用这个aspx表单从浏览器- http://puu.sh/kfcN1/c7b3b991fb.png这是我的代码:(它是python 2,但我认为它也应该运行python 3)。
#! 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||'
太简单了!这个aspx表单只需要在请求头中包含'User-Agent'。所以,我把其中一行改成这样:
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'
}
)