整体过程
爬取iphone12 京东前十页评价相关内容,生成excel表格,进行数据可视化分析
爬虫部分
- 找到要爬取的url网页 ,调用requests库进行模拟浏览器请求访问;
- 利用防盗链User-Agent来辅助获取目标网页
- 将网页评价
str类 内容进行JSON格式 内容替换 - 然后找到字典里所要爬取的键-key(主要爬取颜色,评价内容,手机内存)
- 将爬取的数据存储到excel当中进行保存为
.xlsx文件 ; - 然后进行数据可视化分析 _绘制饼图更加直观方便看出哪种型号的手机销量更好
数据可视化分析
生成的Excel表格
# -*- coding: utf-8 -*-
# @Time : 2021/9/7 9:04
# @Author : LJH
import requests
import json
import time
import openpyxl
from bs4 import BeautifulSoup
from urllib.parse import quote #转换中文的工具
def get_comments(productId,page):
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36"
}
url = "https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId={0}&score=0&sortType=5&page={1}&pageSize=10&isShadowSku=0&fold=1".format(productId,page)
#url = "https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100004770263&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1"
resp = requests.get(url,headers=headers)
print(resp.text)
s = resp.text.replace('fetchJSON_comment98(','')
s = s.replace(');','')
# 替换完成后将str类数据转换为JSON数据
Json_data = json.loads(s)
return Json_data
def get_max_page(productId):
dic_data = get_comments(productId,0)
max_page = dic_data["maxPage"]
return max_page
def get_info(productId):
#max_page = get_max_page(productId)
max_page = 10
lst = [] # 用来存取提取到的商品数据
for page in range(1,max_page+1):
dic_data = get_comments(productId,page)
comment_lst = dic_data['comments']
for item in comment_lst:
content = item["content"]
productColor = item["productColor"]
productSize = item["productSize"]
lst.append([content,productColor,productSize])
time.sleep(3)
save(lst)
#用于将爬取的数据存储到excel当中
def save(lst):
wk = openpyxl.Workbook() #创建工作簿对象
sheet = wk.active #获取活动表
for i in lst: #将列表中的数据添加到活动表中,列表中一条数据在excel中是一行
sheet.append(i)
#将工作簿保存至磁盘上
wk.save("京东Apple销售数据.xlsx")
#测试
if __name__ == '__main__':
productId = 100004770263
page = 0
#print(get_comments(productId,page))
# print(get_max_page(productId))
get_info(productId)
# -*- coding: utf-8 -*-
# @Time : 2021/9/7 11:11
# @Author : LJH
#数据可视化分析 使用pandas比较好
import openpyxl
import matplotlib.pyplot as pit
#从excel中读取数据
wk = openpyxl.load_workbook("京东Apple销售数据.xlsx")
sheet = wk.active #获取活动表sheet
#获取最大行数和列数
rows = sheet.max_row #100行
cols = sheet.max_column #3列
lst = []
for i in range(1,rows+1):
size = sheet.cell(i,3).value
lst.append(size)
# for i in lst:
# print(i)
"""数据统计 用字典内存作key,数量作value"""
dic_size = {}
for i in lst:
dic_size[i] = 0
for i in lst:
for size in dic_size: #遍历字典
if size == i:
dic_size[size]+=1
break #碰到相同键key加1
for i in dic_size:
print(i,dic_size[i])
#做百分比
lst_total = []
for i in dic_size:
lst_total.append([i,dic_size[i],dic_size[i]/100*1.0])
for i in lst_total:
print(i)
'''数据统计完毕,开始进行数据可视化——画饼'''
labels = [i[0] +'内存'for i in lst_total] #使用列表生成式得到饼图的标签
fraces = [i[2] for i in lst_total]
pit.rcParams['font.family'] = ['SimHei']
pit.pie(x=fraces,labels=labels,autopct='%1.1f%%')
# pit.show()
pit.savefig("京东Apple销售数据.jpg")
分析表格如下:
总结:可以看出通过python爬虫和数据可视化操作可以非常方便的辅助于我们的工作,可以说python虽然不能当主攻,但可以当个好助攻。
|