使用Python用AJAX抓取网页

2024-10-01 11:28:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道用Python的漂亮汤来刮HTML的基本知识。但是,this soccer statisticspage调用AJAX来获取播放器播放的分钟数据。(我用firebug识别了网络呼叫)。在

我的问题是:甚至可以使用python来“抓取”这些信息吗?我需要什么样的工具,除了HTML我还应该知道什么?(我目前正在阅读JavaScript和AJAX)。在

我为这个不具体的问题道歉,但我甚至不知道如何搜索可能存在或不存在的工具。在

更新:几天后,我想出了一个在Python中结合使用Selenium和{}的解决方案。我基本上使用Selenium来访问每个链接,等待页面加载,然后刮取信息。PhantomJS充当Selenium中的无头webdriver。在

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


Tags: 工具数据网络信息htmlseleniumajaxjavascript
2条回答

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

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

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

但是还有一些基于PhantomJS构建的框架,例如pjscrape

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

不管怎样,如果你熟悉js,PhantomJS是一个更好的选择。 希望我的回答有帮助。在

相关问题 更多 >