欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

通過抓取淘寶評論為例講解Python爬取ajax動態(tài)生成的數(shù)據(jù)(經(jīng)典)

 更新時間:2015年10月22日 16:15:45   投稿:mrr  
在學(xué)習(xí)python的時候,一定會遇到網(wǎng)站內(nèi)容是通過 ajax動態(tài)請求、異步刷新生成的json數(shù)據(jù) 的情況,并且通過python使用之前爬取靜態(tài)網(wǎng)頁內(nèi)容的方式是不可以實現(xiàn)的,所以這篇文章將要講述如果在python中爬取ajax動態(tài)生成的數(shù)據(jù)。

在學(xué)習(xí)python的時候,一定會遇到網(wǎng)站內(nèi)容是通過 ajax動態(tài)請求、異步刷新生成的json數(shù)據(jù) 的情況,并且通過python使用之前爬取靜態(tài)網(wǎng)頁內(nèi)容的方式是不可以實現(xiàn)的,所以這篇文章將要講述如果在python中爬取ajax動態(tài)生成的數(shù)據(jù)。

至于讀取靜態(tài)網(wǎng)頁內(nèi)容的方式,有興趣的可以查看本文內(nèi)容。

這里我們以爬取淘寶評論為例子講解一下如何去做到的。

這里主要分為了四步:

一 獲取淘寶評論時,ajax請求鏈接(url)

二 獲取該ajax請求返回的json數(shù)據(jù)

三 使用python解析json數(shù)據(jù)

四 保存解析的結(jié)果

步驟一:

獲取淘寶評論時,ajax請求鏈接(url)這里我使用的是Chrome瀏覽器來完成的。打開淘寶鏈接,在搜索框中搜索一個商品,比如“鞋子”,這里我們選擇第一項商品。

 

然后跳轉(zhuǎn)到了一個新的網(wǎng)頁中。在這里由于我們需要爬取用戶的評論,所以我們點擊累計評價。

 

然后我們就可以看到用戶對該商品的評價了,這時我們在網(wǎng)頁中右擊選擇審查元素(或者直接使用F12打開)并且選中Network選項,如圖所示:

 

我們在用戶評論中,翻到底部 點擊下一頁或者第二頁,我們在Network中看到動態(tài)添加了幾項,我們選擇開頭為list_detail_rate.htm?itemId=35648967399的一項。

 

然后點擊該選項,我們可以在右邊選項框中看到有關(guān)該鏈接的信息,我們要復(fù)制Request URL中的鏈接內(nèi)容。

 

我們在瀏覽器的地址欄中輸入剛才我們獲得url鏈接,打開后我們會發(fā)現(xiàn)頁面返回的是我們所需要的數(shù)據(jù),不過顯得很亂,因為這是json數(shù)據(jù)。

 

二 獲取該ajax請求返回的json數(shù)據(jù)

下一步,我們就要獲取url中的json數(shù)據(jù)了。我所使用的python編輯器是pycharm,下面看一下python代碼:

# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import requests
url='https://rate.tmall.com/list_detail_rate.htm?itemId=35648967399&spuId=226460655&sellerId=1809124267ℴ=3&currentPage=1&append=0&content=1&tagId=&posi=&picture=&ua=011UW5TcyMNYQwiAiwQRHhBfEF8QXtHcklnMWc%3D%7CUm5OcktyT3ZCf0B9Qn9GeC4%3D%7CU2xMHDJ7G2AHYg8hAS8WKAYmCFQ1Uz9YJlxyJHI%3D%7CVGhXd1llXGVYYVVoV2pVaFFvWGVHe0Z%2FRHFMeUB4QHxCdkh8SXJcCg%3D%3D%7CVWldfS0RMQ47ASEdJwcpSDdNPm4LNBA7RiJLDXIJZBk3YTc%3D%7CVmhIGCUFOBgkGiMXNwswCzALKxcpEikJMwg9HSEfJB8%2FBToPWQ8%3D%7CV29PHzEfP29VbFZ2SnBKdiAAPR0zHT0BOQI8A1UD%7CWGFBET8RMQszDy8QLxUuDjIJNQA1YzU%3D%7CWWBAED4QMAU%2BASEYLBksDDAEOgA1YzU%3D%7CWmJCEjwSMmJXb1d3T3JMc1NmWGJAeFhmW2JCfEZmWGw6GicHKQcnGCUdIBpMGg%3D%3D%7CW2JfYkJ%2FX2BAfEV5WWdfZUV8XGBUdEBgVXVJciQ%3D&isg=82B6A3A1ED52A6996BCA2111C9DAAEE6&_ksTS=1440490222698_2142&callback=jsonp2143' #這里的url比較長
content=requests.get(url).content

print content #打印出來的內(nèi)容就是我們之前在網(wǎng)頁中獲取到的json數(shù)據(jù)。包括用戶的評論。

這里的content就是我們所需要的json數(shù)據(jù),下一步就需要我們解析這些個json數(shù)據(jù)了。

三 使用python解析json數(shù)據(jù)

# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import requests
import json
import re
url='https://rate.tmall.com/list_detail_rate.htm?itemId=35648967399&spuId=226460655&sellerId=1809124267ℴ=3&currentPage=1&append=0&content=1&tagId=&posi=&picture=&ua=011UW5TcyMNYQwiAiwQRHhBfEF8QXtHcklnMWc%3D%7CUm5OcktyT3ZCf0B9Qn9GeC4%3D%7CU2xMHDJ7G2AHYg8hAS8WKAYmCFQ1Uz9YJlxyJHI%3D%7CVGhXd1llXGVYYVVoV2pVaFFvWGVHe0Z%2FRHFMeUB4QHxCdkh8SXJcCg%3D%3D%7CVWldfS0RMQ47ASEdJwcpSDdNPm4LNBA7RiJLDXIJZBk3YTc%3D%7CVmhIGCUFOBgkGiMXNwswCzALKxcpEikJMwg9HSEfJB8%2FBToPWQ8%3D%7CV29PHzEfP29VbFZ2SnBKdiAAPR0zHT0BOQI8A1UD%7CWGFBET8RMQszDy8QLxUuDjIJNQA1YzU%3D%7CWWBAED4QMAU%2BASEYLBksDDAEOgA1YzU%3D%7CWmJCEjwSMmJXb1d3T3JMc1NmWGJAeFhmW2JCfEZmWGw6GicHKQcnGCUdIBpMGg%3D%3D%7CW2JfYkJ%2FX2BAfEV5WWdfZUV8XGBUdEBgVXVJciQ%3D&isg=82B6A3A1ED52A6996BCA2111C9DAAEE6&_ksTS=1440490222698_2142&callback=jsonp2143'
cont=requests.get(url).content
rex=re.compile(r'\w+[(]{1}(.*)[)]{1}')
content=rex.findall(cont)[0]
con=json.loads(content,"gbk")
count=len(con['rateDetail']['rateList'])
for i in xrange(count):
  print con['rateDetail']['rateList'][i]['appendComment']['content']

  

解析:

這里需要導(dǎo)入所要的包,re為正則表達(dá)式需要的包,解析json數(shù)據(jù)需要import json

cont=requests.get(url).content #獲取網(wǎng)頁中json數(shù)據(jù)

rex=re.compile(r'\w+[(]{1}(.*)[)]{1}') #正則表達(dá)式去除cont數(shù)據(jù)中多余的部分,是數(shù)據(jù)成為真正的json格式的數(shù)據(jù){“a”:”b”,”c”:”d”}

con=json.loads(content,”gbk”) 使用json的loads函數(shù) 將content內(nèi)容轉(zhuǎn)化為json庫函數(shù)可以處理的數(shù)據(jù)格式,”gbk”為數(shù)據(jù)的編碼方式,由于win系統(tǒng)默認(rèn)為gbk

count=len(con[‘rateDetail'][‘rateList']) #獲取用戶評論的個數(shù)(這里只是當(dāng)前頁的)

for i in xrange(count):

print con[‘rateDetail'][‘rateList'][i][‘a(chǎn)ppendComment']

#循環(huán)遍歷用戶的評論 并輸出(也可以根據(jù)需求保存數(shù)據(jù),可以查看第四部分)

這里的難點是在雜亂的json數(shù)據(jù)中查找用戶評論的路徑

四 保存解析的結(jié)果

這里用戶可以將用戶的評論信息保存到本地,如保存為csv格式。

以上就是本文的全部所述,希望大家喜歡。

相關(guān)文章

  • Ajax開始準(zhǔn)備入門篇

    Ajax開始準(zhǔn)備入門篇

    我很開心您來閱讀我寫的關(guān)于ajax的實例教程,無論您是第一次還是老朋友.我將在這里獻(xiàn)上我至今所學(xué),并毫不吝嗇。
    2010-10-10
  • 編寫輕量ajax組件02--淺析AjaxPro

    編寫輕量ajax組件02--淺析AjaxPro

    ajaxpro雖然是一個比較老的組件,不過實現(xiàn)思想和源碼還是很有借鑒價值的。接下來通過本篇文章給大家介紹編寫輕量ajax組件02--淺析AjaxPro,感興趣的朋友可以參考下
    2015-11-11
  • ajax請求后臺得到j(luò)son數(shù)據(jù)后動態(tài)生成樹形下拉框的方法

    ajax請求后臺得到j(luò)son數(shù)據(jù)后動態(tài)生成樹形下拉框的方法

    今天小編就為大家分享一篇ajax請求后臺得到j(luò)son數(shù)據(jù)后動態(tài)生成樹形下拉框的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • AJAX如何接收J(rèn)SON數(shù)據(jù)示例介紹

    AJAX如何接收J(rèn)SON數(shù)據(jù)示例介紹

    如何使用AJAX返回JSON數(shù)據(jù),就是dataType,當(dāng)你設(shè)置json后返回的json字符串傳遞到客戶端就是JSON對象了,示例如下,感興趣的朋友可以參考下
    2013-08-08
  • 簡單實現(xiàn)ajax拖拽上傳文件

    簡單實現(xiàn)ajax拖拽上傳文件

    這篇文章主要教大家如何簡單實現(xiàn)ajax拖拽上傳文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • ajax實現(xiàn)頁面加載和內(nèi)容刪除

    ajax實現(xiàn)頁面加載和內(nèi)容刪除

    這篇文章主要為大家詳細(xì)介紹了ajax實現(xiàn)頁面加載和內(nèi)容刪除的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • ajax post下載flask文件流以及中文文件名問題

    ajax post下載flask文件流以及中文文件名問題

    這篇文章主要介紹了ajax post下載flask文件流以及中文文件名問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • Ajax異步請求JSon數(shù)據(jù)(圖文詳解)

    Ajax異步請求JSon數(shù)據(jù)(圖文詳解)

    在編程過程中使用ajax調(diào)用數(shù)據(jù)的時候,難免要進(jìn)行邏輯的處理,接受的數(shù)據(jù)也變的復(fù)雜比如數(shù)組類型的數(shù)據(jù),這時候就需要使用JSON數(shù)據(jù)類型進(jìn)行處理,通過本篇文章給大家介紹Ajax異步請求json數(shù)據(jù),需要的朋友可以參考下本文
    2015-09-09
  • Spring MVC前端與后端5種ajax交互方法【總結(jié)】

    Spring MVC前端與后端5種ajax交互方法【總結(jié)】

    下面小編就為大家?guī)硪黄猄pring MVC前端與后端5種ajax交互方法【總結(jié)】。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • 解決ajax回調(diào)函數(shù)返回的字符串亂碼問題

    解決ajax回調(diào)函數(shù)返回的字符串亂碼問題

    ajax回調(diào)函數(shù),返回的字符串亂碼問題很是讓人痛恨,下面有個不錯的解決方法,大家可以參考下
    2014-01-01

最新評論