塞马尔特专家介绍如何使用Python抓取AJAX网站

Web抓取是一种使用软件来从网页提取数据的方法。有很多工具可用于使用python抓取网络,其中一些是;天空,草率,要求和美丽的汤。但是,这些工具中的大多数受以下事实的限制:它们仅检索来自服务器的静态HTML,而不检索JavaScript呈现的动态部分。

但是,有些技术可以解决此问题:

1.自动化浏览器

您可以使用自动浏览器,例如Selenium或Splash,它们是无头运行的完整浏览器。但是,设置它们可能非常复杂,因此我们将重点介绍下面的第二个选项。

2.拦截AJAX呼叫

这涉及尝试拦截页面中的AJAX调用并尝试重播或重现它们。

在本文中,我们将重点介绍如何利用请求库和Google Chrome浏览器捕获AJAX调用并重播它们。尽管诸如Scrapy之类的框架可以为您提供更有效的解决方案,但并不是所有情况都需要它。 AJAX调用主要是针对API执行的,该API将返回一个JSON对象,可以轻松处理Requests库。

您需要了解的第一件事是,尝试重播AJAX调用就像使用未公开的API。因此,您必须查看页面进行的所有调用。您可以转到该站点,玩一会儿,看看如何呈现一些信息。演奏完毕后,请返回并开始抓取。

在进入细节之前,让我们首先了解页面的工作原理。如果按状态访问商店页面,请选择任何状态,页面将在商店上呈现信息。每次您选择一个州时,网站都会渲染新的商店以替换旧的商店。这是通过使用AJAX调用到服务器来询问信息来实现的。现在,我们的意图是接听电话并重播。

为此,您所需要做的就是打开控制台的Chrome浏览器DevTools,然后转到XHR子部分。 XHR是执行HTTP和HTTPS请求的接口。因此,此处将显示AJAX请求。双击AJAX调用时,您会在商店中找到很多信息。您也可以预览请求。

您会注意到,许多数据已发送到服务器。但是,请放心,因为并非全部。要查看所需的数据,您可以打开控制台并执行对网站的各种发布请求。既然您知道页面的工作原理并已经解密了AJAX调用,就可以编写刮板了。

您可能会问,“为什么不使用自动浏览器?”解决方案很简单;在着手进行更繁重和复杂的操作(例如自动浏览器)之前,请始终尝试重播AJAX调用。它更简单,更轻。

png

mass gmail