This question already has answers here:
Python library for rendering HTML and javascript [closed]
(2个答案)
6年前关闭。
上面的代码将在http://www.google.com返回源HTML。
要真正返回您在访问google.com时看到的呈现HTML,我需要怎么做?我本质上是试图“执行” URL来触发视图,而不是检索HTML。
为了澄清一些事情:
我实际上并不关心页面的视觉输出
我担心页面的呈现方式,因为它会在适当的浏览器中显示,因此我可以通过该页面上的JavaScript跟踪Google Analytics(分析)目标。
(2个答案)
6年前关闭。
urllib2.urlopen("http://www.someURL.com/pageTracker.html").read();
上面的代码将在http://www.google.com返回源HTML。
要真正返回您在访问google.com时看到的呈现HTML,我需要怎么做?我本质上是试图“执行” URL来触发视图,而不是检索HTML。
为了澄清一些事情:
我实际上并不关心页面的视觉输出
我担心页面的呈现方式,因为它会在适当的浏览器中显示,因此我可以通过该页面上的JavaScript跟踪Google Analytics(分析)目标。
最佳答案
由于Google主页在某种程度上依赖JavaScript,因此您无法通过简单的HTTP请求/ HTML解析库获得呈现的HTML,因为它们不会在页面上运行JavaScript增强功能。仅Web浏览器呈现HTML,因此您需要使用浏览器来获取呈现的HTML。
您需要使用功能完善的无头Web浏览器库,而不是简单的HTTP请求库。
一个可用的选项是Selenium及其WebDriver。
https://pypi.python.org/pypi/selenium
在Selenium中打开一个页面。有关示例,请参见PyPi。
用time.sleep()
等待一段时间,以确保所有资源都已加载并且基于JavaScript的DOM修改已解决。延迟取决于网页,建议您使用不同的值进行实验。
您可以向Selenium驱动程序发出JavaScript命令以返回当前加载页面的DOM树:
driver.execute_script("return document.innerHTML")
关于python - 使用urllib2执行URL并返回渲染的HTML输出,而不是HTML本身,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20622870/