創作內容

5 GP

AJAX

作者:Yotsuba│2020-06-11 19:24:29│巴幣:10│人氣:188
AJAX (Asynchronous JavaScript and XML) 非同步的 JavaScript 與 XML 技術

它用於發送資訊給網頁伺服器,並且在沒有另一個網頁請求下取得資訊

也就是說 AJAX 請求即 AJAX 請求,不隸屬於 HTTP 請求 ?

這點是我覺得模糊的地方,因為撈封包的時候還是看的到 GET 請求

但是我翻到的資料 (書上翻的) 說它是 AJAX 請求


如果可以提交表單從伺服器取的資訊而沒有重新載入網頁

該網站有可能使用 AJAX



可以參考看看這個網站,點擊後兩秒鐘後會改變網頁內容,就是用 AJAX 做到的






如果撈封包的話,其實還是看得見這個 AJAX 請求

只是這個請求的回應會直接改變我們看見的畫面,而且不改變網址

這就是 AJAX 特別的地方


如果從第二張圖看,也可以發現 URL 後面的那支檔案,正是 AJAX 請求的目標

自己在把網址前綴拼拼湊湊也可以拿到該網址

所以你有兩種方式知道 AJAX 請求的目標,一是撈封包,二是看網頁原始碼

基本上實戰的時候兩種方法都要會,只是撈封包還是用的比較多

畢竟網頁一大,那個原始碼不好閱讀




情境題 : 假設你在爬取的時候沒注意到畫面被 AJAX 改變了

而且你想爬取「Here is some important text you want to retrieve !」這段話

一般來說我會直接把字串複製起來,然後在原始碼的地方用 Ctrl + F 搜尋

發現完全搜尋不到,但是右鍵檢查明明又有 ?

因為網頁原始碼就是原始碼,但是畫面已經被 AJAX 渲染過了

造成你看到的和爬蟲看到的不一樣


這時候只好打開 F12 看封包,並且重新請求一次

發現一支 loadedContent.php 耶 ? 原來就是它,那就讓爬蟲直接爬它,結案


表單有使用 AJAX 的話通常有幾個特徵

1. 該網站有使用 jQuery

2. 表單回應通常是 xhr 型態

3. 網址沒有改變,但是網頁內容改變了


可是有使用 jQuery 的網站不是很多嗎 !?

的確,有非常多網站都會使用 AJAX 的技術

不得不說,它對於網頁設計是一個很棒的技術,不過也會造成爬蟲撰寫上的困難

但前提是建立在「你要的資料」是 AJAX 表單取得的

如果你要的資料只是一個靜態的節點,即使網站有使用 AJAX 也無所謂


如果你對於 AJAX 的誕生及 jQuery 的出現有興趣

這邊附上一篇資工串的 FizzyElt 大大寫的 淺談前端工程

雖然寫爬蟲不需要懂前端,但是寫久了你漸漸會看懂 HTML 跟 CSS

而且了解 JavaScript 對於爬蟲有相對的好處,就像你需要了解 AJAX 一樣


延伸閱讀 : Selenium

延伸閱讀 : Pixiv 爬蟲
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4813216
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 3 篇留言

小浣熊ʕ•ᴥ•ʔ
先推考完來看 感謝這篇

06-11 19:47

Yotsuba
那我先預祝考試加油06-15 23:03
Yotsuba
補充 : AJAX 利用 JavaScript 在背景做請求

一樣屬於 HTTP 協議,只是叫它 「AJAX 請求」更貼切

06-11 20:26

小浣熊ʕ•ᴥ•ʔ
請問還有除了AJAX還有其他會渲染原始碼的嗎?
找不太到loadedContent.php 也有可能是我找的方向錯了QQ

06-19 00:32

Yotsuba
F12 就可以撈到了

除了 AJAX 嘛,我想應該是沒有了06-19 01:30
我要留言提醒:您尚未登入,請先登入再留言

5喜歡★happy819tw 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:用 Postman 窺探... 後一篇:Selenium...

追蹤私訊切換新版閱覽

作品資料夾

ACImayday19所有人
看更多我要大聲說昨天19:53


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】