最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python3爬蟲中Ajax的用法

 更新時間:2020年07月10日 14:36:40   作者:愛喝馬黛茶的安東尼  
在本篇內容里小編給大家整理的是關于Python3爬蟲中Ajax的用法,需要的朋友們可以參考下。

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

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

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

1. 實例引入

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

37804a856f3a7329a2bbc0d9c58d71b.png

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

2. 基本原理

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

(1) 發(fā)送請求; (2) 解析內容; (3) 渲染網(wǎng)頁。

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

發(fā)送請求

我們知道JavaScript可以實現(xiàn)頁面的各種交互功能,Ajax也不例外,它也是由JavaScript實現(xiàn)的,實際上執(zhí)行了如下代碼:

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

解析內容

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

渲染網(wǎng)頁

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

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

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

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

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

在下一節(jié)中,我們就來了解下到哪里可以看到這些后臺Ajax操作,去了解它到底是怎么發(fā)送的,發(fā)送了什么參數(shù)。

以上就是Python3爬蟲中Ajax的用法的詳細內容,更多關于Python3中Ajax是什么的資料請關注腳本之家其它相關文章!

相關文章

  • python實現(xiàn)自定義日志的具體方法

    python實現(xiàn)自定義日志的具體方法

    在本篇文章里小編給大家整理的是一篇關于python實現(xiàn)自定義日志的具體方法,有興趣的朋友們可以學習下。
    2021-05-05
  • 通過pykafka接收Kafka消息隊列的方法

    通過pykafka接收Kafka消息隊列的方法

    今天小編就為大家分享一篇通過pykafka接收Kafka消息隊列的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • python3.6利用pyinstall打包py為exe的操作實例

    python3.6利用pyinstall打包py為exe的操作實例

    今天小編就為大家分享一篇python3.6利用pyinstall打包py為exe的操作實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • keras中的卷積層&池化層的用法

    keras中的卷積層&池化層的用法

    這篇文章主要介紹了keras中的卷積層&池化層的用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python實現(xiàn)將內容寫入文件的五種方法總結

    Python實現(xiàn)將內容寫入文件的五種方法總結

    本篇帶你詳細看一下python將內容寫入文件的方法以及細節(jié),主要包括write()方法、writelines()?方法、print()?函數(shù)、使用?csv?模塊、使用?json?模塊,需要的可以參考一下
    2023-04-04
  • Python os模塊學習筆記

    Python os模塊學習筆記

    這篇文章主要介紹了Python os模塊學習筆記,本文總結了OS模塊的常用方法、實用方法,并給出了兩個使用實例,需要的朋友可以參考下
    2015-06-06
  • 使用python查找替換PowerPoint演示文稿中的文本

    使用python查找替換PowerPoint演示文稿中的文本

    演示文稿已成為商務會議、學術報告和教育培訓中不可或缺的一部分,而PowerPoint演示文稿作為行業(yè)標準工具,更是承載著無數(shù)創(chuàng)意與信息的載體,本文將介紹如何使用Python來精確查找并替換PowerPoint演示文稿中的文本,需要的朋友可以參考下
    2024-07-07
  • 使用Python繪制圣誕樹教程詳解(附源代碼)

    使用Python繪制圣誕樹教程詳解(附源代碼)

    又是一年一度的圣誕節(jié)快到了,提到圣誕節(jié),就不得不提圣誕樹,所以本文我們將使用Python繪制一棵圣誕樹,文中有詳細的代碼講解,具有一定的參考價值,需要的朋友可以參考下
    2023-12-12
  • python dataframe如何選擇某一列非空的行

    python dataframe如何選擇某一列非空的行

    這篇文章主要介紹了python dataframe如何選擇某一列非空的行問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python使用JSON庫解析JSON數(shù)據(jù)的方法

    Python使用JSON庫解析JSON數(shù)據(jù)的方法

    這篇文章主要介紹了Python使用JSON庫解析JSON數(shù)據(jù),主要包括如何在網(wǎng)頁中獲取json數(shù)據(jù)及python內置的json庫,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06

最新評論

太白县| 玉树县| 洞头县| 颍上县| 衡水市| 贵阳市| 洪泽县| 三穗县| 迁安市| 梁山县| 太谷县| 岳池县| 阳原县| 平顺县| 友谊县| 延边| 怀宁县| 麻阳| 寻乌县| 自治县| 白河县| 宜兰市| 宁波市| 简阳市| 利辛县| 醴陵市| 潢川县| 河津市| 镇雄县| 黔南| 临潭县| 铜山县| 科尔| 平凉市| 英山县| 那坡县| 卢湾区| 遵义市| 新平| 平果县| 石渠县|