ここのリンクは、javascript 関数の呼び出し__doPostBack
です。
これを自動的に処理する唯一の方法は、スクリプトをダウンロード__doPostBack
し、適切な環境で JS インタープリターで関数を実行することです。これを行う最も簡単な方法は、Greasemonkey などを使用して、ブラウザー環境内からスクリプトを作成することです。
ただし、スクリプトをダウンロードして読み取り、何__doPostBack
が機能するかを理解し、手持ちの情報を使用して Python で同じロジックを実装できるかどうかを確認することで、これを半自動的に処理できるため、javascript:__doPostBack('ctl00$ContentPlaceHolder1$hlPreRelease0','')
実際にダウンロードできる URL に変換できます。
非常に簡単な例を挙げると、これを見つけたとしましょう:
function __doPostBack(name, callback) {
var url = 'http://' + window.location.hostname + '/postbacks/' + name + ".xml";
var xhr = new XMLHttpRequest();
xhr.open("POST", url, false);
xhr.send();
var xml = xhr.responseXML;
if (callback) callback(xml);
}
したがって、次のようにします。
r = re.compile(r"javascript:__doPostBack\('(.*?)','')")
この正規表現に一致する href を取得したら、次のようにします。
nexturl = 'http://' + urlparse.urlparse(lasturl).netloc + '/postbacks/' + m.groups(1) + '.xml'
u = urllib2.urlopen(nexturl, '')
xml = u.read()
JS が非常に複雑で理解しにくい場合は、ブラウザーの Web 開発ツールを使用して、リンクをクリックしたときにダウンロードされる URL を監視し、変換をリバース エンジニアリングする方が簡単な場合があります。(もちろん、いくつかのファイルだけを取得する場合は、同じ場所からキャッシュ内でそれらを見つけることもできます。それで完了です。)