我用python解析一个网站。他们使用了很多重定向,他们通过调用javascript函数来完成它们。
因此,当我只使用urllib来解析网站时,它对我没有帮助,因为我无法在返回的html代码中找到目标网址。
有没有办法访问DOM并从我的python代码中调用正确的javascript函数?
我需要的只是网址,重定向带我。
答案 0 :(得分:9)
我看了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还可以与表单交互并向网站发送击键。
答案 1 :(得分:-1)
对我来说听起来不是很有趣,但每个javascript函数都是一个对象,所以你只需要读取函数而不是调用它,也许URL就在其中。否则,该函数可能会调用另一个函数,然后你必须将其递归...再次,听起来不是很有趣,但可能是可行的。