使用python模拟aspx表单请求

时间:2015-09-18 04:21:33

标签: python asp.net web-scraping python-requests

我正在尝试通过此网站模拟aspx表单的工作 - http://noidajalonline.com/NOIDAJAL/Consumer.aspx

但有一些问题 - 在第一个帖子请求中哪个响应应包含表单中某个select元素的值。由于某种原因,我得到了这个文本作为回应 - ' 0 |错误| 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||'

1 个答案:

答案 0 :(得分:0)

那太简单了!这个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'
    }
)