其他
Python|爬取淘宝热卖商品并对数据进行柱形图可视化
链接:https://pan.baidu.com/s/1gwCream0fFoqwgxZLSkALg
提取码:amq7
参考程序:
from bs4 import BeautifulSoup
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
keyword=input('请输入您要爬取的热卖商品的名称:')
url = 'https://re.taobao.com/search?keyword='+keyword #网址
# 初始化数据容器
title = []#存商品名称
store = []#存店铺名称
price = []#存销售价格
paynum = []#存销量
# 爬取网页上的数据
resp = requests.get(url)
soup = BeautifulSoup(resp.text, "html.parser")
resp.encoding = 'utf-8' # 设置编码
# 标题/店铺名称/价格/销量
all_title = soup.select('span.title')
all_store = soup.select('span.shopNick')
all_price = soup.select('span.pricedetail')
all_paynum = soup.select('span.payNum')
for j in range(len(all_title)):
title.append(all_title[j].text)
store.append(all_store[j].text)
price.append(float(all_price[j].text[1:]))
paynum.append(int(all_paynum[j].text[0:-3]))
#写入表格
df=pd.DataFrame({'商品名':title,'商铺':store,'价格':price,'销量':paynum})
df.to_csv(keyword+'.csv',index=0)
print('数据保存成功!')
#读取表格数据进行可视化
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
data = pd.read_csv(keyword+'.csv')
dt = data.groupby('商铺')['销量'].sum().nlargest(10)#取销售数最多的10条商铺数据
print(dt)
dt.plot(kind='bar',figsize = (20,5))
plt.show()
相关文章: