用Python抓取网页中的JavaScript内容

0 投票
3 回答
9709 浏览
提问于 2025-04-16 13:53

我正在使用Python 3.2(我是新手)在Windows电脑上工作(不过如果需要,我在虚拟机上有Ubuntu 10.04,但我更喜欢在Windows上操作)。

基本上,我可以使用http模块和urllib模块来抓取网页,但只能抓取那些没有使用JavaScript的网页,比如没有用document.write("<div....")这种方式添加数据的网页(也就是说,没有真正的ajax脚本)。

为了处理这些类型的网站,我觉得我需要一个浏览器的JavaScript处理器,这样才能在页面上运行脚本,并给我最终的结果,最好是以字典或文本的形式输出。

我尝试编译python-spider monkey,但我了解到它不支持Windows,而且也不兼容Python 3.x :-?

有没有什么建议?如果有人之前做过类似的事情,我会非常感激你们的帮助!

3 个回答

0

document.write 通常是用来动态生成内容的,通常是通过从服务器获取数据来实现的。这样做的结果是,很多网页应用程序更侧重于 JavaScript 而不是 HTML。“抓取”更多的是指下载 HTML 并进行处理,但在这里并没有 HTML 可以下载。你实际上是在尝试抓取一个图形用户界面程序。

大多数这些应用程序都有某种 API,通常会返回 XML 或 JSON 数据,你可以用这些数据来替代。如果没有 API,你可能应该尝试远程控制一个真正的网页浏览器。

1

可以使用Firebug这个工具来查看到底是通过什么方式获取数据的(是POST请求还是GET请求?)。我猜可能有一个AJAX请求在从服务器获取数据,数据格式可能是XML或者JSON。你可以直接调用这个AJAX请求,然后自己解析数据。

另外,你还可以下载Selenium这个工具,用于Firefox浏览器,启动一个Selenium服务器,通过Selenium下载页面,然后获取页面的DOM内容。MozRepl也可以用,但因为使用的人不多,所以相关文档没有那么丰富。

2

我推荐使用Python对webkit库的绑定 - 这里有个例子。webkit是一个跨平台的工具,用于在Chrome和Safari浏览器中显示网页。这个库非常棒。

撰写回答