我有一個ASPX頁面https://searchlight.cluen.com/E5/CandidateSearch.aspx,上面有一個表單,我想提交併解析信息。將提交請求提交到aspx頁面
使用Python的urllib和urllib2我使用正確的標頭和用戶代理創建了一個post請求。但是由此產生的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頁面顯示在瀏覽器中,沒有任何登錄。
這裏是從信息的結果():
連接:關閉 日期:星期二,2011年6月7日17時05分26秒GMT 服務器:Microsoft-IIS/6.0 X供電,通過:ASP.NET X-AspNet-Version:2.0.50727 Cache-Control:private Content-Type:text/html;字符集= UTF-8 的Content-Length:1944年
快速瀏覽一下,我沒有注意到你的代碼有什麼問題。 我試圖在瀏覽器(Firefox 4.0)中訪問該網站,並收到以下消息:'處理您的請求時發生錯誤。請重試(您可能需要重新登錄)。 ...' – Gregg 2011-06-07 17:24:22
目標aspx頁面是否可以在會話中查找某些內容並跳出來,因爲它在執行發佈的請求中沒有aspnet會話Cookie? – ashelvey 2011-06-07 17:31:40
感謝您的回答。我可以在瀏覽器中訪問該網站,因爲我追加了登錄信息,這裏我沒有包括這些信息。 是的,這似乎是asp.net和我的模擬瀏覽器之間的會話問題。 – user773328 2011-06-08 13:59:43