2013-11-02 26 views
1

我知道使用Python的美丽汤来刮取HTML的基本知识。但是,this soccer statistics页面会进行AJAX调用以获取玩家播放的分钟数据。 (我使用萤火虫识别网络通话)。使用Python刮取带有AJAX的网页

我的问题:是否有可能使用python来“刮”这些信息?我应该知道哪些工具需要和HTML以外的内容? (我目前正在阅读JavaScript和AJAX)。

我对这个非特定问题表示歉意,但我甚至不知道如何向Google提供可能存在或不存在的工具。

更新:几天后,我想出了一个解决方案,使用Python中的SeleniumPhantomJS一起使用。我基本上使用Selenium去每个链接,等待页面加载,然后刮掉信息。 PhantomJS作为Selenium中的无头网络驱动器。

我明白为什么mod想要关闭这个,但是人们给我的建议非常有帮助,因为他们将我推向了正确的方向。我的问题并没有太多关于什么工具是最好的,但更多关于我如何在Python中做到这一点。

+1

[Selenium](https://pypi.python.org/pypi/selenium)是另一种选择。 – thirtydot

+0

我听说过它提到过。但是Selenium使用Python,下面的海报表示Python不是正确的工具...? – Heisenberg

+1

PhantomJS和Selenium都是很好的选择,您的问题可以轻松解决任何一个问题。 Anurag Uniyal只意味着你应该使用一些利用真实浏览器的东西,而不是仅仅解析HTML并且不能执行JavaScript的Beautiful Soup。 – thirtydot

回答

5

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

有很多好的无头浏览器支持脚本,我最喜欢的是PhantomJS,您可以用它来加载网页并将它们刮掉或保存为图像。

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

但随后有刮框架建立在PhantomJS e.g pjscrape

+0

这正是我需要知道的事情!否则,我会失去无数个小时搜索Python解决方案。你能指点我一些关于你所建议的解决方案的教程/文档吗? (即运行一个合适的浏览器+使用JavaScript?) – Heisenberg

+1

去通过phantomjs和pjscrape教程,他们很容易,有趣和强大 –

+0

我也发现casperjs,虽然它的主要目的是功能测试原来是一个伟大的刮板它也运行在phantomJS之上,并且很容易开始使用 http://casperjs.org/ –

0

如果你有使用Python抓取的AJAX的信息,也许你可以试试ghost.py项目。 ghost.py是一个使用PyQt webkit的Python中的webkit web客户端。您可以在执行相关的js代码后获取AJAX信息。

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