鱼C论坛

 找回密码
 立即注册
查看: 2551|回复: 11

[技术交流] 爬爬月饼销量,并数据可视化

[复制链接]
发表于 2020-10-4 22:02:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
后端功能部分
  1. from selenium import webdriver
  2. import  time
  3. import csv
  4. '''搜索商品功能'''
  5. def get_product(key):
  6.     driver.find_element_by_css_selector('#key').send_keys(key)
  7.     driver.find_element_by_css_selector('.button').click()
  8.     #进入一个页面(加载耗时)
  9.     driver.implicitly_wait(10)  #隐式等待
  10.     driver.maximize_window()  # 浏览器最大化

  11. '''模拟鼠标滚轮,加载数据'''
  12. def drop_down():
  13.     for x in range(1,11,2):
  14.         time.sleep(0.5)
  15.         j = x/10
  16.         js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' %j
  17.         driver.execute_script(js)

  18. '''解析商品数据'''
  19. def parse_product():
  20.     lis = driver.find_elements_by_css_selector('.gl-item')

  21.     for li in lis:
  22.         try:
  23.             name = li.find_element_by_css_selector('div.p-name a em').text  #商品名称
  24.             price = li.find_element_by_css_selector('div.p-price strong i').text + '元' #商品价钱
  25.             deal = li.find_element_by_css_selector('div.p-commit strong a').text  #评论数
  26.             title = li.find_element_by_css_selector('span.J_im_icon a').text  #店铺名称
  27.             print(name,price,deal,title)
  28.             with open('data.csv',mode='a',encoding='utf-8',newline='') as f:
  29.                 csv_write = csv.writer(f)
  30.                 csv_write.writerow([name,price,deal,title])
  31.         except Exception as e:
  32.             print(e)

  33. '''获取下一页内容'''
  34. def get_next():
  35.     driver.find_element_by_css_selector('#J_bottomPage > span.p-num > a.pn-next > em').click()
  36.     driver.implicitly_wait(15)





  37. keyword = input('请输入您想要的商品:')
  38. driver = webdriver.Chrome()
  39. driver.get('https://www.jd.com')
  40. get_product(keyword)
  41. for page in range(3):
  42.     drop_down()
  43.     parse_product()
  44.     get_next()
复制代码


可视化部分(这部分用的是pyecharts,在官网上有模板,都是照着模板拔下来的,这块我也没学)
  1. import re
  2. import pandas as pd
  3. import pyecharts.options as opts
  4. from pyecharts.charts import Scatter


  5. def func(x):
  6.     if re.search('万', x):
  7.         return float(x.replace('万', '')) * 10000
  8.     else:
  9.         return float(x)


  10. data_df = pd.read_csv(r'data.csv', names=['名称', '价格', '销量', '店铺'])

  11. data_df['价格'] = data_df['价格'].str.replace('元', '').astype('float')
  12. data_df['销量'] = data_df['销量'].str.replace('+', '')
  13. data_df['销量'] = data_df['销量'].apply(func)

  14. x_data = list(data_df['价格'])
  15. print(x_data)
  16. y_data = list(data_df['销量'])
  17. print(y_data)
  18. (
  19.     Scatter(init_opts=opts.InitOpts(width="1600px", height="1000px"))
  20.         .add_xaxis(xaxis_data=x_data)
  21.         .add_yaxis(
  22.         series_name="销量",
  23.         y_axis=y_data,
  24.         symbol_size=20,
  25.         label_opts=opts.LabelOpts(is_show=False),
  26.     )
  27.         .set_series_opts()
  28.         .set_global_opts(
  29.         xaxis_opts=opts.AxisOpts(
  30.             name='价格',
  31.             type_="value", splitline_opts=opts.SplitLineOpts(is_show=True)
  32.         ),
  33.         yaxis_opts=opts.AxisOpts(
  34.             name='销量',
  35.             type_="value",
  36.             axistick_opts=opts.AxisTickOpts(is_show=True),
  37.             splitline_opts=opts.SplitLineOpts(is_show=True),
  38.         ),
  39.         tooltip_opts=opts.TooltipOpts(is_show=False),
  40.     )
  41.         .render("月饼价格-销量散点图.html")
  42. )

  43. print('散点图制作完成, 请在当前目录下打开html文件')
复制代码


代码哪里不好的地方请大佬们指点

评分

参与人数 1荣誉 +1 鱼币 +3 贡献 +1 收起 理由
v.ki + 1 + 3 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-4 22:11:28 | 显示全部楼层

回帖奖励 +3 鱼币

大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-10-4 22:21:48 | 显示全部楼层

谢谢大佬来捧场
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-4 23:32:32 | 显示全部楼层

回帖奖励 +3 鱼币

向大佬学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-5 07:36:57 | 显示全部楼层

回帖奖励 +3 鱼币

捧场
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-5 08:27:03 | 显示全部楼层

回帖奖励 +3 鱼币

好不好 ,我也看不懂 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-5 09:49:23 | 显示全部楼层

回帖奖励 +3 鱼币

这还要指点吗?这已经够秀了.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-5 10:04:38 | 显示全部楼层

回帖奖励 +3 鱼币

感谢分享~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-5 14:00:00 | 显示全部楼层

回帖奖励 +3 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-5 17:02:24 | 显示全部楼层

回帖奖励 +3 鱼币

1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-7 15:50:43 | 显示全部楼层

回帖奖励 +3 鱼币

膜拜
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-9 10:21:49 | 显示全部楼层

回帖奖励 +3 鱼币

这些代码,我一个都不认识,膜拜
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-29 08:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表