给大家做一个基于Python爬取商品价格曲线,祝大家剁手快乐

稀稀拉拉的过往

先介绍下自己吧 !湖南长沙人,湖北工业大学(大专土木专业),20年毕业后回到老家干本专业工作,说说自己为什么毕业就想转行了吧!行业师兄也认识几个,相比所认识做it的朋友,同样是4 5年工作 差距真的很大,当初选土木专业,刚好那会土木发展还不错,大学老师各种夸好,其实后来接触下来,发现我对土木并不热爱。但是好就业是真的,一毕业就工作了,工资2500,私企施工单位,我的体力劳动大于脑力劳动,说白了就是一带眼镜的农民工,还好我带眼镜,要不然就是农民工了,有喜欢的女孩子那段时间都没自信心追求,不修边幅,烟酒必备,透支身体,涨薪幅度很低,我基本上已经看到了工作的5年师兄5000工资,和一眼看到未来的自己才是最可怕的,前景遥遥无期,而且20年年底那会,经常半夜施工,加班常有的事,主要是甲方就是你大爷,我本人还算了解自己,不大适应,权术拍马屁的一个人,就做好自己工作就行,恰恰这行就需要这样,比我早进行业的老哥们,我们经常夜宵,感觉他们都是喝酒来麻痹自己,转行年龄资本也晚了,现在想起来虽然程序员也加班,相比补贴各方面也有所安慰了。以上感触还有很多,当然也不排除混的很好师兄,很热爱土木的师兄。

经历不多,太多感叹 ,太多感触,我不怪行业,只怪自己,当时唯一的想法也是就想早点跳出来,以后想跳都跳不出来了,我当时跟一起工作的李哥话语很多,他们也都支持我转行,不要步自己后尘,哪怕转行失败了。我也心甘情愿,也谢谢他们对我的支持。

转行开始到找到工作,差不多整整一年了,时间可以说快,也可以说慢,最终选择了学习Python,不为别的,就因为它容易上手工资也可观!

附带一张学习图,当时凌晨12点还在敲代码的自己,当时自己打气发的朋友圈没有删。找到唯一的一张图了。

给大家的618礼物

一年一度的618购物节就要到了,各种优惠活动从5月份开始充斥淘宝、京东、抖音等各大平台。购物节产品的“明降暗升”已经是默认的潜规则了。打破这种规则很简单,可以用 Python 写一个定时监控商品价格的小工具。

思路第一步抓取商品的价格存入 Python 自带的 SQLite 数据库每天定时抓取商品价格使用 pyecharts 模块绘制价格折线图,让低价一目了然

抓取价格

从商品详情的页面中打开 F12 控制面板,找到包含 p.3 的链接,在旁边的 preview 面板中可以看到当前商品价格

给大家做一个基于Python爬取商品价格曲线,祝大家剁手快乐_第1张图片
defget_jd_price(skuId):

sku_detail_url = 'http://item.jd.com/{}.html'
  sku_price_url = 'https://p.3.cn/prices/get?type=1&skuid=J_{}'
 
  r = requests.get(sku_detail_url.format(skuId)).content
 
  soup = BeautifulSoup(r, 'html.parser', from_encoding='utf-8')
  sku_name_div = soup.find('div', class_="sku-name")
 
  if not sku_name_div:
    print('您输入的商品ID有误!')
    return
  else:
    sku_name = sku_name_div.text.strip()
 
  r = requests.get(sku_price_url.format(skuId))
  price = json.loads(r.text)[0]['p']
 
  data = {
    'sku_id': skuId,
    'sku_name': sku_name,
    'price': price
  }
  return data

把抓取的价格存入 sqlite 数据库,使用 PyCharm 的 Database 功能创建一个 sqlite 数据库

给大家做一个基于Python爬取商品价格曲线,祝大家剁手快乐_第2张图片
给大家做一个基于Python爬取商品价格曲线,祝大家剁手快乐_第3张图片
最终将数据插入到数据库

# 新增
def insert(data):
  conn = sqlite3.connect('price.db')
  c = conn.cursor()
  sql = 'INSERT INTO price (sku_id,sku_name,price) VALUES ("{}", "{}", "{}")'.format(data.get("sku_id"), data.get("sku_name"), data.get('price') )
  c.execute(sql)
  conn.commit()
  conn.close()
 
# 查询
def select(sku_id):
  conn = sqlite3.connect('price.db')
  c = conn.cursor()
  sql = 'select sku_id, sku_name, price, time from price where sku_id = "{}" order by time asc'.format(sku_id)
  cursor = c.execute(sql)
 
  datas = []
  for row in cursor:
    data = {
      'sku_id': row[0],
      'sku_name': row[1],
      'price': row[2],
      'time': row[3]
    }
    datas.append(data)
  conn.close()
 
  return datas

示例结果

使用轻量级的 schedule 模块每天早上 10 点抓取京东价格这一步骤

安装 schedule 模块

pip install schedule
def run_price_job(skuId):
 
  # 使用不占主线程的方式启动 计划任务
  def run_continuously(interval=1):
    cease_continuous_run = threading.Event()
 
    class ScheduleThread(threading.Thread):
      @classmethod
      def run(cls):
        while not cease_continuous_run.is_set():
          schedule.run_pending()
          time.sleep(interval)
 
    continuous_thread = ScheduleThread()
    continuous_thread.start()
    return cease_continuous_run
   
  # 每天10点运行,get_jd_price:任务方法,skuId:任务方法的参数
  schedule.every().day.at("10:00").do(get_jd_price, skuId=skuId)
  run_continuously()

查看历史价格

使用 pytharts 模块绘制折线图,直观的查看每一天的价格差异

datas = select(skuId)
 
def line(datas):
  x_data = []
  y_data = []
  for data in datas:
    x_data.append(data.get('time'))
    y_data.append(data.get('price'))
 
  (
    Line()
    .add_xaxis(x_data)
    .add_yaxis(datas[0].get('sku_name'), y_data, is_connect_nones=True)
    .render("商品历史价格.html")
  )

给大家做一个基于Python爬取商品价格曲线,祝大家剁手快乐_第4张图片

总结

本文抓取了京东商城的价格,小伙伴们也可以修个脚本抓取淘宝的价格。使用 Python 解决生活中的小小痛点,让钱包不再干瘪。

读者福利:知道你对Python感兴趣,便准备了这套python学习资料

对于0基础小白入门:

如果你是零基础小白,想快速入门Python是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以找到适合自己的学习方案

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习等习教程。带你从零基础系统性的学好Python!

[[[CSDN大礼包:《python兼职资源&全套学习资料》免费分享]]]安全链接,放心点击

Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。图片

Python必备开发工具

图片

Python600视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。 图片

实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。 图片

Python副业兼职与全职路线

在这里插入图片描述

面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。 图片

上述这份完整版的Python全套学习资料已经上传CSDN官方,朋友们如果需要可以微信扫描下方CSDN官方认证二维码 即可领取↓↓↓

你可能感兴趣的:(Python,python,数据库,开发语言,代码规范,算法)