前言 環境使用 Python 3.8 Pycharm 模塊使用 requests jieba 結巴分詞 wordcloud 詞雲 數據來源分析 明確需求 <數據來源分析> 採集數據是什麼東西? 通過那個url地址得到想要數據的內容 抓包分析: 瀏覽器自帶工具 --> 開發者工具I. F12 或者 鼠 ...
前言
環境使用
- Python 3.8
- Pycharm
模塊使用
- requests
- jieba 結巴分詞
- wordcloud 詞雲
數據來源分析
明確需求 <數據來源分析>
- 採集數據是什麼東西? 通過那個url地址得到想要數據的內容
- 抓包分析: 瀏覽器自帶工具 --> 開發者工具
I. F12 或者 滑鼠右鍵點擊檢查 選擇 network 點擊第二頁
II. 複製評論內容, 在開發者工具里進行搜索, 可以直接找對應評論數據包
https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100029079354&score=0&sortType=5&page=1&pageSize=10&isShadowSku=0&rid=0&fold=1
對於本篇文章有疑問的同學可以加【資料白嫖、解答交流群:753182387】
數據獲取代碼實現
發送請求
url = 'https://club.jd.com/comment/productPageComments.action'
# 請求參數 --> 字典數據類型 構建完整鍵值對
data = {
# 'callback': 'fetchJSON_comment98',
'productId': '100029079354',
'score': '0',
'sortType': '5',
'page': page,
'pageSize': '10',
'isShadowSku': '0',
'rid': '0',
'fold': '1',
}
# 模擬瀏覽器 --> headers 請求頭
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
# 發送請求 requests 模塊 get 方法<請求方式>
# 等號左邊: url/params/headers 屬於get函數裡面形式參數 等號右邊 url/data/headers 傳入進去參數/變數
response = requests.get(url=url, params=data, headers=headers)
獲取數據, 伺服器返迴響應數據
- response 響應對象
- response.text 獲取響應文本數據
- response.json() 獲取響應json字典數據
解析數據
字典數據類型: 通過鍵值對提取數據內容 <字典取值>
根據冒號左邊的內容[鍵], 提取冒號右邊的內容[值]
# for迴圈遍歷 把列表裡面元素一個一個提取出來
for i in response.json()['comments']:
content = i['content']
print(content)
保存數據
with open('口紅評論.txt', mode='a', encoding='utf-8') as f:
# 寫入數據內容
f.write(content)
f.write('\n')
詞雲代碼
# 導入結巴分詞 jieba 模塊國人開源的
import jieba
# 導入詞雲
import wordcloud
# 導入讀取圖片
import imageio
# 讀取圖片內容
py = imageio.imread('img\\矢量圖5.png')
# 讀取文件 返回對象 mode 方式模式 r 讀 a追加寫入保存 mode 預設是r
f = open('口紅評論.txt', encoding='utf-8')
# 讀取內容
text = f.read()
# 分詞 --> 把完整一句話分成很多個單詞
string = ' '.join(jieba.lcut(text))
# 詞雲圖 配置
wc = wordcloud.WordCloud(
width=1000, # 寬
height=700, # 高
font_path='msyh.ttc', # 詞雲字體
# 設置停用詞, 把沒有辭彙, 停用
stopwords={'的', '了', '很', '也'},
# 設置背景顏色
# background_color='pink',
contour_width=5,
contour_color='pink',
mask=py
)
# string 數據傳入進去
wc.generate(string)
# 導入詞雲圖
wc.to_file('有形狀的詞雲黑.png')
print(string)