【发布时间】:2011-09-10 06:37:14
【问题描述】:
我在https://searchlight.cluen.com/E5/CandidateSearch.aspx 有一个ASPX 页面,上面有一个表单,我想提交并解析它以获取信息。
使用 Python 的 urllib 和 urllib2 我创建了一个带有正确标头和用户代理的发布请求。但生成的 html 响应不包含预期的结果表。是我误解了还是我遗漏了任何明显的细节?
import urllib
import urllib2
headers = {
'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13',
'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml; q=0.9,*/*; q=0.8',
'Content-Type': 'application/x-www-form-urlencoded'
}
# obtained these values from viewing the source of https://searchlight.cluen.com/E5/CandidateSearch.aspx
viewstate = '/wEPDwULLTE3NTc4MzQwNDIPZBYCAg ... uJRWDs/6Ks1FECco='
eventvalidation = '/wEWjQMC8pat6g4C77jgxg0CzoqI8wgC3uWinQQCwr/ ... oPKYVeb74='
url = 'https://searchlight.cluen.com/E5/CandidateSearch.aspx'
formData = (
('__VIEWSTATE', viewstate),
('__EVENTVALIDATION', eventvalidation),
('__EVENTTARGET',''),
('__EVENTARGUMENT',''),
('textcity',''),
('dropdownlistposition',''),
('dropdownlistdepartment',''),
('dropdownlistorderby',''),
('textsearch',''),
)
# change user agent
from urllib import FancyURLopener
class MyOpener(FancyURLopener):
version = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11'
myopener = MyOpener()
# encode form data in post-request format
encodedFields = urllib.urlencode(formData)
f = myopener.open(url, encodedFields)
print f.info()
try:
fout = open('tmp.htm', 'w')
except:
print('Could not open output file\n')
fout.writelines(f.readlines())
fout.close()
关于这个主题有几个问题很有帮助(例如how to submit query to .aspx page in python),但我坚持这一点,并在可能的情况下寻求更多帮助。
生成的 html 页面显示我可能需要登录,但 aspx 页面显示在我的浏览器中,无需任何登录。
以下是 info() 的结果:
连接:关闭 日期:格林威治标准时间 2011 年 6 月 7 日星期二 17:05:26 服务器:Microsoft-IIS/6.0 X-Powered-By: ASP.NET X-AspNet-版本:2.0.50727 缓存控制:私有 内容类型:文本/html;字符集=utf-8 内容长度:1944
【问题讨论】:
-
快速浏览一下,我没有发现您的代码有任何问题。我尝试在浏览器(Firefox 4.0)中访问该网站并收到以下消息:
An error has occurred in processing your request. Please try again (you may need to log back in). ... -
目标 aspx 页面是否会在会话中查找某些内容并因为在您执行帖子的请求中没有 aspnet 会话 cookie 而出错?
-
感谢您的回答。我可以在我的浏览器中访问该站点,因为我附加了登录信息,但我没有在此处包含这些信息。是的,这似乎是 asp.net 和我的模拟浏览器之间的会话问题。
标签: asp.net python httpwebrequest