日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python爬取淘宝评论_抓取淘宝某产品评论(附视频教程)

發布時間:2023/12/9 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬取淘宝评论_抓取淘宝某产品评论(附视频教程) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

之前我水平有限,對于淘寶評論這種動態網頁,由于數據在網頁源碼中是找不到的,所以無法抓取數據,只能使用selenium模仿人操控瀏覽器來抓數據,

優點是可見容易且不宜被淘寶公司封鎖;缺點是速度太慢。

經過今天一天的鉆研,終于學會分析數據包,而且淘寶評論的數據包都是以json格式傳輸的。除了學會抓包,還要會從json中提取出想要的評論數據才行。

本文實現難點:

一、分析數據包,找到淘寶評論傳輸用的網址,分析網址特點

二、如何從找到的數據包中,從json格式內容中得到想要的數據

(可先看視頻,學習本案例中的抓包分析過程)

如果您覺得我的教程寫的不錯的話,可以關注下

我的公眾號: 大鄧帶你玩轉python (ID:shuxierenshengba)

案例

網址如下

https://detail.tmall.com/item.htm?id=38975978198&ali_refid=a3_430582_1006:1106461044:N:%E7%94%B5%E5%8A%A8%E7%89%99%E5%88%B7:bfee1d767fa0a91e5e853b29d794c6f2&ali_trackid=1_bfee1d767fa0a91e5e853b29d794c6f2&spm=a230r.1.14.1.R0FzCm打開該網址,點擊評論

如圖中紅色圈中的評論,分析發現,在網頁源碼中查找不到。

找啊找,找啊找,圈中的評論就是不在網頁源碼中。那只有一種可能,在我們看不到的方式傳送。

不懂分析抓包的,可以看看下面這篇淘寶評論實戰。

用火狐瀏覽器,打開開發者工具,點擊網絡

真的找到了啊

那么接下來我們要知道這個包傳遞信息的網址

點擊消息頭,紅方框中的請求網址就是這個評論數據包傳遞的網址

網址如下

https://rate.tmall.com/list_detail_rate.htm?itemId=38975978198&spuId=279689783&sellerId=92889104&order=3&currentPage=1&append=0&content=1&tagId=&posi=&picture=&ua=250UW5TcyMNYQwiAiwTR3tCf0J/QnhEcUpkMmQ=|Um5Ockt+RH9FfEZ6QXpEcCY=|U2xMHDJ+H2QJZwBxX39RaVV7W3UyWzAeSB4=|VGhXd1llXGlTaFJrUW1WbVNnUG1PdkN7TnBNeUxzR3pFeEB/QG44|VWldfS0TMwc4BycbIwMtBn0AbSJNNl87ZBVaMRo6FEIU|VmhIGCIWNgsrFy4XKgo0ATkDIx8mHyICNgs2FioUIBo6DjMOWA4=|V25OHjBVPF07RT5XLgAgFCEUNAgxCDQULRAoHUsd|WGFBET8RMQ02Di4SKhIvDzQJNAoxZzE=|WWBAED5bMlM1SzBZIA4uGy4VNQkxCzISJhwjGCN1Iw==|WmNDEz1YMVA2SDNaIw0tES0QLw8zCzIIKBwmHCMWQBY=|W2JCEjxZMFE3STJbIgwsEicbOwc+AToaJhoiFi0RRxE=|XGVFFTteN1YwTjVcJQsrEisePgI8CDERLRkmEiseSB4=|XWREFDpbJksuYgZvFXUwWjhVPkNtTXZKclJuUWhUdEt2SXRAfCp8|XmdHFzkXNws3Az4eIh4rFDQLNg8xBThuOA==|X2ZGFjgWNgkxDy8TKh8hAT4DOAY9B1EH|QHlZCSdMK09uA3IPdB0zEy8TLRMzDzAFORkmGyAUKx5IHg==|QXlZCSdCK0osUilAORc3Z1ltVHRIdk96LAwxET8RMQ4wBTAOO207|QnpaCiQKKnpDeUFhXWFZYUF4RH1dYVt7R3hNbVFqPBwhAS8BIRgnEywRLHos|Q3pHelpnR3hYZF1hQX9HfV1kRHhFZVFxRGRefkVlXX1EZFp6RWVZeU1tWA4=&isg=Anl5FLTxBcTYINlX61XKverNieN0fW04cSauNZurS6AfIpO049emCPMw0pst&needFold=0&_ksTS=1487675147352_694&callback=jsonp695

看起來網址太長,太復雜(稍安勿躁),那么先復制網址,在瀏覽器上打開看看是什么東西

復雜的網址中,有些亂七八糟的可以刪除,有意義的部分保留。切記刪除一小部分后先嘗試能不能打開網頁,如果成功再刪減,直到不能刪減。最后保留下來的網址,如下

https://rate.tmall.com/list_detail_rate.htm?itemId=38975978198&spuId=279689783&sellerId=92889104&order=3&callback=jsonp698&currentPage=1

currentPage=1意思是當前頁碼是第一頁。如果改動為currentPage=3表示是第三頁。

好了,下面是代碼

import requests

import json

import simplejson

headers = {

'Connection': 'keep-alive',

'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:51.0) Gecko/20100101 Firefox/51.0'

}

base_url = 'https://rate.tmall.com/list_detail_rate.htm?itemId=38975978198&' \

'spuId=279689783&sellerId=92889104&order=3&callback=jsonp698'

#在base_url后面添加&currentPage=1就可以訪問不同頁碼的評論

#將響應內容的文本取出

tb_req = requests.get(base_url, headers=headers).text[12:-1]

#將str格式的文本格式化為字典

tb_dict = simplejson.loads(tb_req)

#編碼: 將字典內容轉化為json格式對象

tb_json = json.dumps(tb_dict, indent=2) #indent參數為縮緊,這樣打印出來是樹形json結構,方便直觀

#解碼: 將json格式字符串轉化為python對象

review_j = json.loads(tb_json)

#這里的0是當前頁的第一個評論,每頁面其實是有20個評論的

print(review_j["rateDetail"]["rateList"][0]['rateContent'])

上面只是抓了一個評論。下面是抓取近100頁的網頁所有評論,代碼如下

import requests

import json

import time

import simplejson

headers = {

'Connection': 'keep-alive',

'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:51.0) Gecko/20100101 Firefox/51.0'

}

base_url = 'https://rate.tmall.com/list_detail_rate.htm?itemId=38975978198&' \

'spuId=279689783&sellerId=92889104&order=3&callback=jsonp698'

#在base_url后面添加&currentPage=1就可以訪問不同頁碼的評論

for i in range(2, 98, 1):

url = base_url + '&currentPage=%s' % str(i)

#將響應內容的文本取出

tb_req = requests.get(base_url, headers=headers).text[12:-1]

print(tb_req)

#將str格式的文本格式化為字典

tb_dict = simplejson.loads(tb_req)

#編碼: 將字典內容轉化為json格式對象

tb_json = json.dumps(tb_dict, indent=2) #indent參數為縮緊,這樣打印出來是樹形json結構,方便直觀

#print(type(tb_json))

#print(tb_json)

#解碼: 將json格式字符串轉化為python對象

review_j = json.loads(tb_json)

for p in range(1, 20, 1):

print(review_j["rateDetail"]["rateList"][p]['rateContent'])

time.sleep(1)

歡迎關注公眾號 :大鄧帶你玩轉python

總結

以上是生活随笔為你收集整理的python爬取淘宝评论_抓取淘宝某产品评论(附视频教程)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。