【问题标题】:Is this possible to load the page after the javascript execute using python?这可以在使用 python 执行 javascript 后加载页面吗?
【发布时间】:2012-06-18 07:51:23
【问题描述】:

这是我阅读的页面:

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

如您所见,Hello World是使用javascript添加到HTML页面上的,当我使用HTML解析器时,例如BeautifulSoup来解析它,它无法解析Hello World,有可能对我来说,解析客户端真正看到的实际结果......?谢谢。

【问题讨论】:

  • 也许可以解析这个简单的案例,但否则您需要将页面上的所有 javascript 作为真正的 javascript 引擎运行才能看到结果。
  • @Ted:你可能想看看这个:stackoverflow.com/questions/6025082/…

标签: javascript python-3.x beautifulsoup


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我在 python 中编写网络爬虫时遇到了类似的问题,我发现 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 元素的时间安排更加容易。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-07
      • 2012-02-18
      • 2015-05-22
      • 2019-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多