javascript - 使用 Python 通过 AJAX 抓取网页

标签 javascript python ajax

我了解使用 Python 的 Beautiful Soup 抓取 HTML 的基础知识。然而,this soccer statistics页面进行 AJAX 调用来获取玩家上场时间的数据。 (我使用 firebug 识别了网络调用)。

我的问题:是否有可能使用 python 来“抓取”这些信息?我需要什么工具以及除了 HTML 之外我还应该了解什么? (我目前正在阅读 JavaScript 和 AJAX)。

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

更新:几天后,我想出了一个使用 Selenium 的解决方案在 Python 中与 PhantomJS 结合使用。我基本上用了Selenium转到每个链接,等待页面加载,然后抓取信息。 PhantomJS用作 Selenium 中的 headless 网络驱动程序.

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

最佳答案

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

有很多很好的支持脚本的 headless 浏览器,我最喜欢的是 PhantomJS ,您可以使用它来加载网页并抓取它们或将它们另存为图像,例如

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

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

关于javascript - 使用 Python 通过 AJAX 抓取网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19738938/

相关文章:

javascript - 如何通过javascript将字符串转换为数组?

python - 将内存html文件传递给pdfkit

python - 在 MySQLdb 游标上执行多条语句

javascript - 获取元素相对于浏览器的绝对位置

javascript - 从主数组中获取所有嵌套数组并根据键合并它们中的每一个 Knockout.Js

javascript - 如何使用 jest 测试 setTimeout 和 jquery 方法

python - re.sub 试图转义 repl 字符串?

jquery - HTML Web Worker 和 Jquery Ajax 调用

javascript - 使用 Javascript 通过 AJAX 从 URL 获取 JSON 响应

php - 如何在我的ajax成功函数中打印json