使用Python使用AJAX抓取网页

时间:2013-11-02 04:26:26

标签: javascript python ajax

我了解使用Python的Beautiful Soup抓取HTML的基础知识。但是,this soccer statistics页面会调用AJAX来获取玩家播放的分钟数据。 (我使用firebug确定了网络呼叫)。

我的问题:是否可以使用python“刮”这些信息?我需要哪些工具以及HTML以外的其他工具? (我目前正在阅读JavaScript和AJAX)。

我为这个非特定问题道歉,但我甚至不知道谷歌如何处理可能存在或可能不存在的工具。

更新:几天后,我在Python中使用SeleniumPhantomJS一起提出了一个解决方案。我基本上使用Selenium转到每个链接,等待页面加载,然后抓取信息。 PhantomJSSelenium中充当无头网络驱动程序。

我理解为什么mods要关闭它,但人们给我的建议非常有帮助,因为他们让我朝着正确的方向前进。我的问题不是关于什么工具最好,而是关于我如何在Python中做到这一点。

2 个答案:

答案 0 :(得分:5)

使用python是不必要的,并且在许多情况下不起作用,最好的方法是运行适当的浏览器并使用javascript来完成所有的抓取,因为它可以访问整个DOM,甚至可以绑定到事件。 / p>

有许多优秀的无头浏览器支持脚本,我最喜欢的是PhantomJS,您可以使用它来加载网页并抓取它们或将它们保存为图像,例如。

var page = require('webpage').create();
page.open('http://github.com/', function () {
    page.render('github.png');
    phantom.exit();
});

但是后来有一些基于PhantomJS的抓取框架,例如pjscrape

答案 1 :(得分:1)

如果您必须使用Python来抓取AJAX信息,也许您可​​以尝试ghost.py项目。 ghost.py是Python中的webkit Web客户端,使用PyQt webkit。执行相关的js代码后,您可以获取AJAX信息。

无论如何,如果你熟悉js,PhantomJS是一个更好的选择。 希望我的回答有所帮助。