当您尝试使用 Python 请求(POST)页面时,我试图弄清楚如何处理神秘的“__VIEWSTATE”和 Cie。它是我的脚本中许多问题的主要根源......并且我意识到,当我寻找答案/解决方案时,您没有那么多的解决方案(几乎为 0!)。
在本主题中:
无法使用 Python urllib2 加载 ASP.NET 页面 https://stackoverflow.com/questions/5380638/unable-to-load-asp-net-page-using-python-urllib2您可以看到我给出的解决方案包括每次加载页面时解析神秘字段的值...这可行,但实际上非常愚蠢:-)
for result in the_page.findAll('input', attrs={'name' : '__VIEWSTATE'}):
view_state = result['value']
for result_1 in the_page.findAll('input', attrs={'name' : '__EVENTVALIDATION'}):
event_validation = result_1['value']
for result_2 in the_page.findAll('input', attrs={'name' : '__PREVIOUSPAGE'}):
previous_page = result_2['value']
for result in the_page.findAll('input', attrs={'name' : '__EVENTTARGET'}):
event_target = result['value']
之后 :
url = 'http://bandscore.ielts.org/search.aspx'
values = {
'__EVENTTARGET' : 'gdvSearchResults',
'__EVENTARGUMENT' : page,
'__VIEWSTATE' : view_state,
'__PREVIOUSPAGE' : previous_page,
'__EVENTVALIDATION' : event_validation,
'DropDownList1' : Country,
#'txtSearchInstitution' : '',
#'hdnSearchText' : '',
#'rdoFilter': '%25',
}
user_agent = 'Mozilla/5 (Solaris 10) Gecko'
headers = { 'User-Agent' : user_agent }
data = urllib.urlencode(values)
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)
thePage = response.read()
the_page = soup(thePage)
因此,这里还有一些带有良好解释的链接/一些提出了解决方案:
__VIEWSTATE 包含什么? https://stackoverflow.com/questions/1350216/what-does-the-viewstate-hold
http://msdn.microsoft.com/en-us/library/system.web.ui.losformatter.aspx http://msdn.microsoft.com/en-us/library/system.web.ui.losformatter.aspx
http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspx http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspx
http://msdn.microsoft.com/en-us/library/ms972976.aspx http://msdn.microsoft.com/en-us/library/ms972976.aspx
Mechanicalize 看不到一些隐藏的表单输入? https://stackoverflow.com/questions/3338214/mechanize-does-not-see-some-hidden-form-inputs
无法使用 Python urllib2 加载 ASP.NET 页面 https://stackoverflow.com/questions/5380638/unable-to-load-asp-net-page-using-python-urllib2
我意识到很多人都在试图找到一个好的方法来解决这个问题,所以让我们一起努力找到一个好的解决方案;-)
EDIT1: 也发现了,可能很有趣http://code.google.com/p/peekviewstate/source/browse/trunk/src/peekviewstate_example.py http://code.google.com/p/peekviewstate/source/browse/trunk/src/peekviewstate_example.py
(抱歉,这篇文章并不完美/充满了好信息……我是个n00b,但我很努力)