月饼销量数据分析
开发环境
- Python3.7
- Pycharm
- selenium
- csv
开发工具
- selenium工具的使用
- 结构化的数据解析
- csv数据保存(兼容性)
程序流程
import csv
import time
from selenium import webdriver
'''
下面的代码,都是用户行为去决定的,
你平常怎么浏览, 你的代码逻辑,就应该怎么编写,
'''
def get_product(key):
"""
搜索商品的功能
:send_key 关键字, 比如(月饼)
"""
driver.find_element_by_css_selector('#key').send_keys(key)
driver.find_element_by_css_selector('.button').click()
# 进入页面(需要加载《耗时》)
driver.implicitly_wait(10) # 隐式等待(弹性等待)----》死等
driver.maximize_window() # 窗口最大化,
# 懒加载-- 根据鼠标滚动,
def drop_down():
"""
模拟人去滚动鼠标, 加载所有数据
:return:
"""
for x in range(1,11,2):
time.sleep(0.5)
# 分为5个部分
j = x/10
js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
driver.execute_script(js)
def parse_product():
"""
解析商品数据
:return:
"""
# 多个标签用find_elements_by_css_selector()
lis = driver.find_elements_by_css_selector('.gl-item')
try:
for li in lis:
name = li.find_element_by_css_selector('div.p-name a em').text # 商品名字
price = li.find_element_by_css_selector('div.p-price strong i').text + '元' # 商品价格
deal = li.find_element_by_css_selector('div.p-commit strong a').text # 商品评价
title = li.find_element_by_css_selector('span.J_im_icon a').text # 商铺名字
print("%s\n %s\n %s\n %s\n" % (name,price,deal,title))
# 写入data.csv文件
with open("data.csv", "a", encoding="utf-8", newline='') as f:
csv_write = csv.writer(f)
csv_write.writerow([name,price,deal,title])
except Exception as e:
print(e)
def get_next():
"""找到下一页,点击"""
driver.find_element_by_css_selector('#J_bottomPage > span.p-num > a.pn-next').click()
driver.implicitly_wait(10)
if __name__ == '__main__':
"""程序入口"""
keyWords = input("请输入你想要的商品。。")
driver = webdriver.Chrome() # 创建一个浏览器对象
driver.get("https://www.jd.com/")
get_product(keyWords)
# 取3页数据
for i in range(3):
drop_down()
parse_product()
get_next()
通过数据可视化文件,形成点状图,商家即可分析数据