2011-11-08 56 views
2

我使用python解析網站。他們使用了很多重定向,他們通過調用javascript函數來完成它們。在網站上獲取JavaScript重定向的最終目的地

所以,當我只是使用urllib來解析網站,它並沒有幫助我,因爲我無法找到返回的HTML代碼中的目標網址。

有沒有辦法訪問DOM並從我的Python代碼中調用正確的JavaScript函數?

我所需要的只是網址,重定向需要我。

+0

只有困難的方法:解析html,構建dom,並像真正的瀏覽器一樣執行javascript –

+0

或者其他困難的方法:使用像Selenium或WebKit綁定這樣的工具從Python控制真正的瀏覽器引擎。 –

+0

不是我想聽的,... – Kai

回答

8

我看着Selenium。如果你沒有運行一個腳本純(這意味着你沒有顯示,不能啓動一個「正常」的瀏覽器)解決方案其實很簡單:

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還可以與表單交互並將按鍵發送到網站。

+3

這將永久睡眠,如果URL沒有重定向(更改) – ducu

0

它聽起來並不像我有趣,但是每個javascript函數都是一個對象,所以你可以只讀這個函數,而不是調用它,也許URL就在它裏面。否則,該函數可能會調用另一個,然後您將不得不遞歸到...再次,聽起來不像有趣,但可能是可行的。