黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

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

系統(tǒng) 1942 0

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

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

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

這里主要分為了四步:

一 獲取淘寶評(píng)論時(shí),ajax請(qǐng)求鏈接(url)

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

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

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

步驟一:

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

?

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

?

然后我們就可以看到用戶對(duì)該商品的評(píng)價(jià)了,這時(shí)我們?cè)诰W(wǎng)頁中右擊選擇審查元素(或者直接使用F12打開)并且選中Network選項(xiàng),如圖所示:

通過抓取淘寶評(píng)論為例講解Python爬取ajax動(dòng)態(tài)生成的數(shù)據(jù)(經(jīng)典)_第1張圖片 ?

我們?cè)谟脩粼u(píng)論中,翻到底部 點(diǎn)擊下一頁或者第二頁,我們?cè)贜etwork中看到動(dòng)態(tài)添加了幾項(xiàng),我們選擇開頭為list_detail_rate.htm?itemId=35648967399的一項(xiàng)。

通過抓取淘寶評(píng)論為例講解Python爬取ajax動(dòng)態(tài)生成的數(shù)據(jù)(經(jīng)典)_第2張圖片 ?

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

?

我們?cè)跒g覽器的地址欄中輸入剛才我們獲得url鏈接,打開后我們會(huì)發(fā)現(xiàn)頁面返回的是我們所需要的數(shù)據(jù),不過顯得很亂,因?yàn)檫@是json數(shù)據(jù)。

通過抓取淘寶評(píng)論為例講解Python爬取ajax動(dòng)態(tài)生成的數(shù)據(jù)(經(jīng)典)_第3張圖片 ?

二 獲取該ajax請(qǐng)求返回的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比較長(zhǎng)
content=requests.get(url).content
          

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

這里的content就是我們所需要的json數(shù)據(jù),下一步就需要我們解析這些個(gè)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']
          

通過抓取淘寶評(píng)論為例講解Python爬取ajax動(dòng)態(tài)生成的數(shù)據(jù)(經(jīng)典)_第4張圖片 ??

解析:

這里需要導(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']) #獲取用戶評(píng)論的個(gè)數(shù)(這里只是當(dāng)前頁的)

for i in xrange(count):

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

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

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

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

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

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


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論