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

DNB*_*ims 5 javascript beautifulsoup python-3.x

这是我读过的页面:

<html>
<head>
<script type="text/javascript">
    document.write("Hello World")
</script>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,Hello World使用javascript在HTML页面上添加,当我使用HTML解析器时,就像BeautifulSoup解析它一样,它无法解析Hello World,有可能我解析实际结果如何客户端真的看到....?谢谢.

She*_* Wu 11

我在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")
...
Run Code Online (Sandbox Code Playgroud)

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


Dav*_*und 3

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