我使用python解析網站。他們使用了很多重定向,他們通過調用javascript函數來完成它們。在網站上獲取JavaScript重定向的最終目的地
所以,當我只是使用urllib來解析網站,它並沒有幫助我,因爲我無法找到返回的HTML代碼中的目標網址。
有沒有辦法訪問DOM並從我的Python代碼中調用正確的JavaScript函數?
我所需要的只是網址,重定向需要我。
我使用python解析網站。他們使用了很多重定向,他們通過調用javascript函數來完成它們。在網站上獲取JavaScript重定向的最終目的地
所以,當我只是使用urllib來解析網站,它並沒有幫助我,因爲我無法找到返回的HTML代碼中的目標網址。
有沒有辦法訪問DOM並從我的Python代碼中調用正確的JavaScript函數?
我所需要的只是網址,重定向需要我。
我看着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還可以與表單交互並將按鍵發送到網站。
這將永久睡眠,如果URL沒有重定向(更改) – ducu
它聽起來並不像我有趣,但是每個javascript函數都是一個對象,所以你可以只讀這個函數,而不是調用它,也許URL就在它裏面。否則,該函數可能會調用另一個,然後您將不得不遞歸到...再次,聽起來不像有趣,但可能是可行的。
只有困難的方法:解析html,構建dom,並像真正的瀏覽器一樣執行javascript –
或者其他困難的方法:使用像Selenium或WebKit綁定這樣的工具從Python控制真正的瀏覽器引擎。 –
不是我想聽的,... – Kai