您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關如何抓取ajax動態網站,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
什么是ajax呢,簡單來說,就是加載一個網頁完畢之后,有些信息你你還是看不到,需要你點擊某個按鈕才能看到數據,或者有些網頁是有很多頁數據的,而你在點擊下一頁的時候,網頁的url地址沒有變化,但是內容變了,這些都可以說是ajax。如果還聽不懂,我給你看看百度百科的解釋吧,下面就是。
Ajax 即“Asynchronous Javascript And XML”(異步 JavaScript 和 XML),是指一種創建交互式網頁應用的網頁開發技術。
Ajax = 異步 JavaScript 和 XML(標準通用標記語言的子集)。
Ajax 是一種用于創建快速動態網頁的技術。
Ajax 是一種在無需重新加載整個網頁的情況下,能夠更新部分網頁的技術。 [
通過在后臺與服務器進行少量數據交換,Ajax 可以使網頁實現異步更新。這意味著可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。
傳統的網頁(不使用 Ajax)如果需要更新內容,必須重載整個網頁頁面。
下面說下例子,我抓取過的ajax網頁最難的就是網易云音樂的評論,感興趣的可以看看利用python爬取網易云音樂,并把數據存入mysql
這里的評論就是ajax加載的,其他的那個抓今日頭條妹子圖片的也算是ajax加載的,只不過我把它簡單化了。還有很多,就不說了,說下我今天要說的ajax網站吧!
http://www.kfc.com.cn/kfccda/storelist/index.aspx
這個是肯德基的門面信息
這里有很多頁數據,每一頁的數據都是ajax加載的。如果你直接用python請求上面那個url的話,估計什么數據都拿不到,不信的話可以試試哈。這時候,我們照常打開開發者工具。先把所有請求清楚,把持續日志打上勾,然后點擊下一頁,你會看到
上面那個請求就是ajax請求的網頁,里面就會有我們需要的數據,我們看看是什么樣的請求
是個post請求,請求成功狀態碼為200,請求url上面也有了,下面的from data就是我們需要post的數據,很容易就可以猜到pageIndex就是頁數,所以我們可以改變這個值來進行翻頁。
這個網頁就分析完了,這樣就是解決ajax動態網頁了,是不是覺得很簡單,其實不是的,只是這個網頁比較簡單的,因為表單(from data)的數據并沒有進行加密,如果進行加密的話估計你的找js文件看看參數是怎樣加密的了,這就是我之前寫的網易云音樂評論的爬取。看這些混淆的js尋找加密方法的話有時會讓你很頭痛,所以經常有人會選擇用selenium這些來進行爬取,但是用這些會使爬蟲的性能降低,所以這個方法在工作里是不允許的。所以必須學會怎樣應對這些ajax。
貼下代碼
import requests
page = 1
while True:
url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname'
data = {
'cname': '廣州',
'pid': '',
'pageIndex': page,
'pageSize': '10'
}
response = requests.post(url, data=data)
print(response.json())
if response.json().get('Table1', ''):
page += 1
else:
break
看完上述內容,你們對如何抓取ajax動態網站有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。