サーバー サイトで ASP.NET を使用する Web サイトをクロールするためのアプリケーションを Python で作成しました。
それが私がやっていることです(ブラウザからHTTPヘッダーと本文をコピーしただけです。これを行う方法が他にないためです):
(そして、うまくいきました!少し前に..しかし、今では「接続タイムアウト」で中止されます。)
def SBPageLoader(keyWord):
headers = {'Host': 'www.sberbank-ast.ru' ,
'Connection': 'keep-alive' ,
'Content-Length': '46203',
'Cache-Control': 'max-age=0' ,
'Origin': 'http://www.sberbank-ast.ru' ,
'User-Agent': 'Mozilla/5.0 (Linux i686)' ,
'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8' ,
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' ,
'Referer': 'http://www.sberbank-ast.ru/purchaseList.aspx' ,
'Accept-Encoding': 'gzip,deflate,sdch' ,
'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4' ,
'Accept-Charset': 'utf-8' ,
'Cookie': 'ASP.NET_SessionId=d4ki4j55hsq3km45b4qbrgjs; __utma=99173852.1461595200.1340564818.1341685237.1341758931.11; __utmb=99173852.4.9.1341758978151; __utmc=99173852; __utmz=99173852.1340564818.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)'
}
#....( here is lots of data with undefined meaning - what is it? )......
data = '_EVENTTARGET=&__EVENTARGUMENT=........&__VIEWSTATE=%2FwEPDwUJMzUwNDEzMjgxD2QWAmYPZBYCZg9kFgICAw9kFgQCAQ9kFgICAg8PFgIeB1Zpc2libGVoZGQCBQ9kFgICAQ9kFgYCAQ9kFgICAQ9kFgwCFQ8PZBYGHgdjb250ZW50BRRsZWFmOnB1YmxpY2RhdGVzdGFydB4JbWF4bGVuZ3RoBQIxMB4FY2xhc3MFCCBkYXRlUlVTZAIXDw9kFgYfAQUSbGVhZjpwdWJsaWNkYXRlpurchID400=887031'
data = data.replace("Toyota", keyWord) # haha - cattlecode
log("Strat loading http://www.sberbank-ast.ru/purchaseList.aspx ...")
req = urllib2.Request('http://www.sberbank-ast.ru/purchaseList.aspx', data, headers)
response = urllib2.urlopen(req)
page = response.read()
log(".. Loading is finished")
さて、古いボディとヘッダーを新しいものに置き換えても、同じことが起こります。
何が問題なのかについてのアイデアは大歓迎です。