2022 年Python3 爬蟲教程 - 什么是Ajax?

      網友投稿 621 2025-04-04

      Ajax,全稱為 Asynchronous JavaScript and XML,即異步的 JavaScript 和 XML。它不是一門編程語言,而是利用 JavaScript 在保證頁面不被刷新、頁面鏈接不改變的情況下與服務器交換數據并更新部分網頁的技術。


      對于傳統的網頁,如果想更新其內容,那么必須刷新整個頁面,但有了 Ajax,便可以在頁面不被全部刷新的情況下更新其內容。在這個過程中,頁面實際上是在后臺與服務器進行了數據交互,獲取到數據之后,再利用 JavaScript 改變網頁,這樣網頁內容就會更新了。

      可以到 W3School 上體驗幾個示例感受一下:http://www.w3school.com.cn/ajax/ajax_xmlhttprequest_send.asp。

      1. 實例引入

      瀏覽網頁的時候,我們會發現很多網頁都有下滑查看更多的選項。比如,拿微博來說,以我的主頁為例:https://m.weibo.cn/u/2830678474,切換到微博頁面,一直下滑,可以發現下滑幾個微博之后,再向下就沒有了,轉而會出現一個加載的動畫,不一會兒下方就繼續出現了新的微博內容,這個過程其實就是 Ajax 加載的過程,如圖所示。

      我們注意到頁面其實并沒有整個刷新,也就意味著頁面的鏈接沒有變化,但是網頁中卻多了新內容,也就是后面刷出來的新微博。這就是通過 Ajax 獲取新數據并呈現的過程。

      2. 基本原理

      初步了解了 Ajax 之后,我們再來詳細了解它的基本原理。發送 Ajax 請求到網頁更新的這個過程可以簡單分為以下 3 步:

      發送請求

      解析內容

      渲染網頁

      下面我們分別來詳細介紹一下這幾個過程。

      發送請求

      我們知道 JavaScript 可以實現頁面的各種交互功能,Ajax 也不例外,它也是由 JavaScript 實現的,

      1

      2

      3

      4

      5

      【2022 年】Python3 爬蟲教程 - 什么是Ajax?

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      var xmlhttp;

      if (window.XMLHttpRequest) {

      //code for IE7+, Firefox, Chrome, Opera, Safari

      xmlhttp = new XMLHttpRequest();

      } else {

      //code for IE6, IE5

      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

      }

      xmlhttp.onreadystatechange = function () {

      if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {

      document.getElementById("myDiv").innerHTML = xmlhttp.responseText;

      }

      };

      xmlhttp.open("POST", "/ajax/", true);

      xmlhttp.send();

      這是 JavaScript 對 Ajax 最底層的實現,實際上就是新建了 XMLHttpRequest 對象,然后調用 onreadystatechange 屬性設置了監聽,然后調用 open 和 send 方法向某個鏈接(也就是服務器)發送了請求。前面用 Python 實現請求發送之后,可以得到響應結果,但這里請求的發送變成 JavaScript 來完成。由于設置了監聽,所以當服務器返回響應時,onreadystatechange 對應的方法便會被觸發,然后在這個方法里面解析響應內容即可。

      解析內容

      得到響應之后,onreadystatechange 屬性對應的方法便會被觸發,此時利用 xmlhttp 的 responseText 屬性便可取到響應內容。這類似于 Python 中利用 requests 向服務器發起請求,然后得到響應的過程。那么返回內容可能是 HTML,可能是 JSON,接下來只需要在方法中用 JavaScript 進一步處理即可。比如,如果是 JSON 的話,可以進行解析和轉化。

      渲染網頁

      JavaScript 有改變網頁內容的能力,解析完響應內容之后,就可以調用 JavaScript 來針對解析完的內容對網頁進行下一步處理了。比如,通過 document.getElementById().innerHTML 這樣的操作,便可以對某個元素內的源代碼進行更改,這樣網頁顯示的內容就改變了,這樣的操作也被稱作 DOM 操作,即對網頁文檔進行操作,如更改、刪除等。

      上例中,document.getElementById("myDiv").innerHTML=xmlhttp.responseText 便將 ID 為 myDiv 的節點內部的 HTML 代碼更改為服務器返回的內容,這樣 myDiv 元素內部便會呈現出服務器返回的新數據,網頁的部分內容看上去就更新了。

      我們觀察到,這 3 個步驟其實都是由 JavaScript 完成的,它完成了整個請求、解析和渲染的過程。

      再回想微博的下拉刷新,這其實就是 JavaScript 向服務器發送了一個 Ajax 請求,然后獲取新的微博數據,將其解析,并將其渲染在網頁中。

      因此,我們知道,真實的數據其實都是一次次 Ajax 請求得到的,如果想要抓取這些數據,需要知道這些請求到底是怎么發送的,發往哪里,發了哪些參數。如果我們知道了這些,不就可以用 Python 模擬這個發送操作,獲取到其中的結果了嗎?

      3. 總結

      本節我們簡單了解了 Ajax 請求的基本原理和帶來的頁面加載效果,下一節我們來介紹下怎么來分析 Ajax 請求。

      Ajax Python

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel表格設置0不顯示的方法(excel表格怎么0不顯示)
      下一篇:生產費用與制造成本的區別(生產成本的制造費用和制造費用的區別)
      相關文章
      国产亚洲精品美女久久久久久下载| 亚洲精品V天堂中文字幕| 亚洲国产综合专区电影在线| 亚洲人成无码网WWW| 亚洲综合激情五月丁香六月| 亚洲精品无码久久久久久久| 亚洲午夜精品久久久久久人妖| 亚洲av永久无码制服河南实里| 国产啪亚洲国产精品无码| 在线视频亚洲一区| 成人精品国产亚洲欧洲| xvideos亚洲永久网址| 国产精品亚洲专区无码WEB| 日韩色视频一区二区三区亚洲| www国产亚洲精品久久久| 亚洲成人一区二区| 超清首页国产亚洲丝袜| 国产亚洲精AA在线观看SEE| 久久久久无码精品亚洲日韩| 亚洲精品自产拍在线观看动漫| 亚洲高清在线mv| 亚洲av永久综合在线观看尤物| 日韩亚洲不卡在线视频中文字幕在线观看 | 国产精品成人亚洲| 亚洲人成网站在线观看青青| 亚洲线精品一区二区三区| 在线亚洲97se亚洲综合在线| 亚洲AV无码成人网站久久精品大| 亚洲人成依人成综合网| 亚洲一区二区三区久久| 亚洲日韩国产二区无码| 亚洲国产成人a精品不卡在线| 国外亚洲成AV人片在线观看| 亚洲AV一宅男色影视| 亚洲欧洲精品久久| 色偷偷亚洲女人天堂观看欧| 亚洲AV无码AV吞精久久| 国产日韩成人亚洲丁香婷婷| 亚洲国产a∨无码中文777| 亚洲精品在线免费观看视频| 亚洲国产成a人v在线观看|