本文介绍了提交POST请求到aspx页面的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在https://searchlight.cluen.com/E5/CandidateSearch.aspx上有一个形式,我想提交和分析的信息。
使用Python的urllib而urllib2的我创建了正确的头和用户代理POST请求。但所得的HTML响应不包含结果的预期表。我误解还是我失去了任何明显的细节?
进口的urllib
进口的urllib2 标题= {
HTTP_USER_AGENT:Mozilla的/ 5.0(视窗; U; Windows NT的5.1; EN-US; RV:1.9.0.13)的Gecko / 2009073022火狐/ 3.0.13,
HTTP_ACCEPT:text / html的,是application / xhtml + xml的,应用/ XML; Q = 0.9,* / *; Q = 0.8',
内容类型:应用程序/ x-WWW的形式urlen codeD
}
#无法查看https://searchlight.cluen.com/E5/CandidateSearch.aspx源获得的这些值
视图状态='/ wEPDwULLTE3NTc4MzQwNDIPZBYCAg ... uJRWDs / 6Ks1FECco ='
eventvalidation ='/ wEWjQMC8pat6g4C77jgxg0CzoqI8wgC3uWinQQCwr / ... oPKYVeb74 ='
URL ='https://searchlight.cluen.com/E5/CandidateSearch.aspx
FORMDATA =(
(__VIEWSTATE,视图状态),
(__EVENTVALIDATION',eventvalidation)
('__EVENTTARGET',''),
('__EVENTARGUMENT',''),
('textcity',''),
('dropdownlistposition',''),
('dropdownlistdepartment',''),
('dropdownlistorderby',''),
('TEXTSEARCH',''),
) #更改用户代理
从进口的urllib FancyURLopener
类MyOpener(FancyURLopener):
版本='的Mozilla / 5.0(视窗; U; Windows NT的5.1;它; RV:1.8.1.11)的Gecko / 20071127火狐/ 2.0.0.11 myopener = MyOpener() #恩code的请求后格式的表单数据
EN codedFields = urllib.urlen code(FORMDATA) F = myopener.open(URL,连接codedFields)
打印f.info() 尝试:
FOUT =打开('tmp.htm','W')
除:
打印(无法打开输出文件\\ n) fout.writelines(f.readlines())
fout.close()
有关于这个话题,是有帮助的(如的页),但我卡在这一点,并寻求更多的帮助,如果这是可能的。
生成的HTML页面是说我可能需要登录,但aspx页面显示在浏览器中没有任何登录。
下面是从信息()的结果:
解决方案
I tried mechanize and urllib2, and mechanize handles cookies better. I can submit the form simply by specifying with mechanize:
browser= mechanize.Browser()
browser.select_form(form_name)
browser.set_value("Page$Next", name="pagenumber")
It was not necessary to replicate the post request manually, and mechanize in this case was able to handle a form that relies on javascript.
这篇关于提交POST请求到aspx页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!