2011-11-08 15 views
2

私はpythonでウェブサイトを解析します。彼らは多くのリダイレクトを使用し、javascript関数を呼び出すことによってそれらを行います。ウェブサイト上のjavascriptリダイレクトの最終的な宛先を取得する

urllibを使用してサイトを解析すると、返されたHTMLコードで宛先URLを見つけることができないため、私には役に立ちません。

DOMにアクセスし、Pythonコードから正しいjavascript関数を呼び出す方法はありますか?

私が必要とするのは、リダイレクト先のURLです。

+0

実際のブラウザと同じように、htmlの解析、DOMの構築、javascriptの実行は難しいです –

+0

その他の困難な方法:Pythonから実際のブラウザエンジンを制御するためにSeleniumやWebKitバインディングなどのツールを使用します。 –

+0

私が聞きたいものではありません... – Kai

答えて

8

私はセレンを調べました。私のユースケースについては

from selenium import webdriver 

driver = webdriver.Firefox() 
link = "http://yourlink.com" 
driver.get(link) 

#this waits for the new page to load 
while(link == driver.current_url): 
    time.sleep(1) 

redirected_url = driver.current_url 

はこれがある以上:あなたは純粋なスクリプトを実行していない場合は、溶液が実際には非常に簡単です(あなたが表示されていないと、「正常な」ブラウザを起動することができないという意味)十分な。 Seleniumは、フォームとやり取りし、キーストロークをWebサイトに送信することもできます。

+3

URLがリダイレクト(変更)されない場合、これは永久にスリープします。 – ducu

0

私にとっては楽しいような音ではありませんが、すべてのJavaScript関数もオブジェクトなので、関数を呼び出すのではなく、URLが入っている可能性があります。それ以外の場合は、その関数は、あなたが次にrecurseする必要がある別のものを呼び出すかもしれません...再び、楽しいのように聞こえないが、実行可能かもしれない。

関連する問題