如何用Python抓取由JavaScript生成的HTML?

5 投票
3 回答
1197 浏览
提问于 2025-04-15 21:59

我想抓取由JavaScript生成的HTML,就像你在Firebug中看到的那样。

更新:我找到了一篇文章:http://blog.motane.lu/2009/07/07/downloading-a-pages-content-with-python-and-webkit/,这篇文章使用PyQt来解决这个问题,对我来说效果很好。

但是又出现了另一个问题:我必须先登录这个网站,但我不知道如何在PyQt中模拟登录…… :(

3 个回答

0

你可以使用python spidermonkey,这是一个把Firefox浏览器引擎封装成Python可以用的工具:http://code.google.com/p/python-spidermonkey/

不过这个项目看起来还不太成熟。

0

为了更准确地说,JavaScript 并不是生成 HTML 的。JavaScript 其实是在你的浏览器里生成和操作一个叫做 DOM 的东西。Firebug 显示的是这个 DOM 的 HTML 表现形式,让它看起来更容易理解。实际上,HTML 并不存在。 :)

我觉得没有现成的简单解决方案。你可以看看 这篇博客和评论,里面有一些有用的建议。

5

看看这篇文章,它讲的是如何使用Windmill来抓取网页内容,特别是在浏览器执行完JavaScript之后。

这篇文章会展示如何提取想要的信息,即使网页不是直接用HTML写的,而是通过JavaScript自动生成并更新DOM树时,也能用同样的三个步骤来完成。

里面有一些例子,我相信你可以很容易地进行调整。

撰写回答