使用python执行javascript后,是否可以加载页面?

时间:2012-06-15 08:45:06

标签: javascript python-3.x beautifulsoup

这是我读过的页面:

<html>
<head>
<script type="text/javascript">
    document.write("Hello World")
</script>
</head>
<body>
</body>
</html>

正如您所看到的,使用javascript在HTML页面上添加Hello World,当我使用HTML解析器(如BeautifulSoup解析它)时,它无法解析{{1} ,我可以解析客户端真正看到的实际结果....?感谢。

2 个答案:

答案 0 :(得分:10)

我在python中编写web scraper时遇到了类似的问题,我发现Selenium Web Driver与BeautifulSoup结合使用非常有用。代码最终看起来像这样:

from selenium import webdriver
browser = webdriver.Firefox()
browser.get("http://www.yoursite.com")
soup = BeautifulSoup(browser.page_source, "html.parser")
...

使用Selenium WebDriver,还可以在功能上“等待某个DOM元素加载”,这使得javascript元素的计时也更容易。

答案 1 :(得分:3)

为了正确表示在javascript操作之后DOM的样子,你必须实际执行javascript。这必须通过具有javascript引擎和文档的DOM(而不是文本/标记)表示的东西来完成 - 通常是浏览器。