?? 關(guān)于 Ajax
【簡介??】:Ajax,即異步的 JavaScript XML。(全稱為 Asynchronous JavaScript and XML)幅疼。Ajax不是一門編程語言凹嘲,而是利用 JavaScipt 在保證頁面不被刷新、頁面鏈接不改變的情況下與服務(wù)器交換數(shù)據(jù)并更新部分網(wǎng)頁的技術(shù)悔叽。
【換句話說??】:有了 Ajax 莱衩,可以在頁面沒有被全部刷新的情況下,更新其內(nèi)容娇澎。在這個過程中笨蚁,頁面實際上是在后臺與服務(wù)器進(jìn)行了數(shù)據(jù)交互。
【舉個栗子??】:比如說你在網(wǎng)購的時候趟庄,瀏覽某貓網(wǎng)頁時括细,滑動滾輪,會發(fā)現(xiàn)下面刷新了商品圖片和相關(guān)信息戚啥,這就是Ajax 動態(tài)加載奋单。實際上這個網(wǎng)頁并沒有刷新(對,網(wǎng)頁鏈接沒有更新猫十,沒有重新加載這個網(wǎng)頁览濒,但是更新了內(nèi)容呆盖。)這個就是通過 Ajax 獲取新數(shù)據(jù)’并呈現(xiàn)的過程
?? Ajax 基本原理
發(fā)送 Ajax 請求到網(wǎng)頁更新的這個過程,可以簡單分為3個步驟:
- (1)發(fā)送請求匾七;
- (2)解析內(nèi)容絮短;
- (3)渲染網(wǎng)頁;
?? Ajax 分析方法
- (1)查找請求
Ajax 特殊的請求類型 :
xhr
昨忆。在Type中丁频,我們可以找到類型為xhr的請求,然后點(diǎn)擊邑贴,可以看到如下所示的Ajax的請求頭的詳細(xì)內(nèi)容席里。
【總結(jié)??】:我們看見的網(wǎng)頁內(nèi)容的真實數(shù)據(jù)可能并不是最原始的頁面返回的,而是后來執(zhí)行 JavaScript后拢驾,再次向后臺發(fā)送了 Ajax 請求奖磁,瀏覽器得到數(shù)據(jù)后再進(jìn)一步渲染出來的。
- (2)過濾請求
利用 Chrome 開發(fā)者 具的篩選功能篩選出所有的Ajax 請求繁疤。找到篩選欄咖为,點(diǎn)擊XHR
,如下圖所示:
?? Ajax 數(shù)據(jù)分析
以簡書“發(fā)現(xiàn)”的界面為例稠腊,每次點(diǎn)擊閱讀更多之后躁染,就會發(fā)出了一個請求,實現(xiàn)Ajax動態(tài)加載更多的文章架忌。具體實現(xiàn)見下圖:
然后打開請求吞彤,我們可以直觀看出以下內(nèi)容:
- Request Method: POST
- Status Code: 200
- Remote Address: 111.62.69.240:443
- Referrer Policy: no-referrer-when-downgrade
我們可以借此查看請求的參數(shù)有哪些?具體的功能等等叹放。
【重要發(fā)現(xiàn)??】:如果我們想要獲取新的文章內(nèi)容饰恕,只要在發(fā)送請求時,改變page這個參數(shù)的值即可井仰。
?? Ajax應(yīng)用實例:
關(guān)于Ajax動態(tài)加載在數(shù)據(jù)爬取中的應(yīng)用埋嵌,可以參考一下: