Semalt專家介紹如何使用Python抓取AJAX網站

網絡抓取是一種利用軟件從網頁提取數據的方法。有很多工具可用於通過python抓取網絡,其中一些是;天空,草率,要求和美麗的湯。但是,這些工具中的大多數受以下事實的限制:它們僅檢索來自服務器的靜態HTML,而不檢索JavaScript呈現的動態部分。

但是,有些技術可以克服此問題:

1。自動化瀏覽器

您可以使用自動瀏覽器(例如​​Selenium或Splash),它們是無頭運行的完整瀏覽器。但是,設置它們可能非常複雜,因此我們將重點介紹下面的第二個選項。

2。攔截AJAX通話

這涉及嘗試攔截頁面中的AJAX調用並嘗試重播或重現它們。

在本文中,我們將重點介紹如何利用請求庫和Google Chrome瀏覽器捕獲AJAX調用並重播它們。儘管諸如Scrapy之類的框架可以為您提供更有效的解決方案,但並不是所有情況都需要它。 AJAX調用主要是針對API執行的,該API將返回Requests庫可以輕鬆處理的JSON對象。

您需要了解的第一件事是,嘗試重播AJAX調用就像使用未公開的API。因此,您必須查看頁面進行的所有調用。您可以轉到該站點,玩一會兒,看看如何呈現一些信息。演奏完畢後,請返回並開始抓取。

在進入細節之前,讓我們首先了解頁面的工作原理。如果按狀態訪問商店頁面,請選擇任何狀態,頁面將在商店上呈現信息。每次您選擇一個州時,該網站都會提供新的商店來替換舊的商店。這是通過使用AJAX調用服務器來詢問信息來實現的。現在,我們的意圖是接聽電話並重播。

為此,您需要做的就是打開控制台的Chrome瀏覽器DevTools並轉到XHR小節。 XHR是執行HTTP和HTTPS請求的接口。因此,此處將顯示AJAX請求。雙擊AJAX調用時,您會在商店中找到很多信息。您也可以預覽請求。

您會注意到很多數據已發送到服務器。但是,請放心,因為並非全部。要查看所需的數據,您可以打開控制台並執行對網站的各種發布請求。現在您已經知道頁面的工作原理並解密了AJAX調用,接下來就可以編寫刮板了。

您可能會問,“為什麼不使用自動瀏覽器?”解決方案很簡單;在著手進行更繁重和復雜的操作(例如自動瀏覽器)之前,請始終嘗試重播AJAX調用。它更簡單,更輕便。

png

mass gmail