0

我了解使用 Python 的 Beautiful Soup 抓取 HTML 的基础知识。但是,这个足球统计页面会调用 AJAX 来获取球员上场时间的数据。(我使用萤火虫识别了网络调用)。

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

对于这个非特定问题,我深表歉意,但我什至不知道如何通过 Google 搜索可能存在或不存在的工具。

更新:几天后,我想出了一个Selenium在 Python 中结合PhantomJS. 我基本上习惯Selenium去每个链接,等待页面加载,然后抓取信息。PhantomJS用作Selenium.

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

4

2 回答 2

5

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

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

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

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

于 2013-11-02T04:31:18.457 回答
1

如果非要使用 Python 爬取 AJAX 信息,或许可以试试ghost.py项目。ghost.py是 Python 中的 webkit web 客户端,使用 PyQt webkit。执行相关js代码后即可获取AJAX信息。

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

于 2013-11-02T05:29:58.373 回答