最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python 制作查詢商品歷史價(jià)格的小工具

 更新時(shí)間:2020年10月20日 08:54:09   作者:Python技術(shù)  
這篇文章主要介紹了Python 如何制作查詢商品歷史價(jià)格的小工具,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下

一年一度的雙十一就快到了,各種砍價(jià)、蓋樓、挖現(xiàn)金的口令將在未來一個(gè)月內(nèi)充斥朋友圈、微信群中。玩過多次雙十一活動(dòng)的小編表示一頓操作猛如虎,一看結(jié)果2毛5。浪費(fèi)時(shí)間不說而且未必得到真正的優(yōu)惠,雙十一電商的“明降暗升”已經(jīng)是默認(rèn)的潛規(guī)則了。打破這種規(guī)則很簡(jiǎn)單,可以用 Python 寫一個(gè)定時(shí)監(jiān)控商品價(jià)格的小工具。

思路

  • 第一步抓取商品的價(jià)格存入 Python 自帶的 SQLite 數(shù)據(jù)庫(kù)
  • 每天定時(shí)抓取商品價(jià)格
  • 使用 pyecharts 模塊繪制價(jià)格折線圖,讓低價(jià)一目了然

抓取京東價(jià)格

從商品詳情的頁面中打開 F12 控制面板,找到包含 p.3 的鏈接,在旁邊的 preview 面板中可以看到當(dāng)前商品價(jià)格

def get_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

把抓取的價(jià)格存入 sqlite 數(shù)據(jù)庫(kù),使用 PyCharm 的 Database 功能創(chuàng)建一個(gè) sqlite 數(shù)據(jù)庫(kù)

最終將數(shù)據(jù)插入到數(shù)據(jù)庫(kù)

# 新增
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

示例結(jié)果

計(jì)劃任務(wù)

使用輕量級(jí)的 schedule 模塊每天早上 10 點(diǎn)抓取京東價(jià)格這一步驟

安裝 schedule 模塊

pip install schedule
def run_price_job(skuId):

  # 使用不占主線程的方式啟動(dòng) 計(jì)劃任務(wù)
  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點(diǎn)運(yùn)行,get_jd_price:任務(wù)方法,skuId:任務(wù)方法的參數(shù)
  schedule.every().day.at("10:00").do(get_jd_price, skuId=skuId)
  run_continuously()

查看歷史價(jià)格

使用 pytharts 模塊繪制折線圖,直觀的查看每一天的價(jià)格差異

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("商品歷史價(jià)格.html")
  )

總結(jié)

本文抓取了京東商城的價(jià)格,小伙伴們也可以修個(gè)腳本抓取淘寶的價(jià)格。使用 Python 解決生活中的小小痛點(diǎn),讓錢包不再干癟。

示例代碼:

Python 制作商品歷史價(jià)格查詢

以上就是Python 制作查詢商品歷史價(jià)格的小工具的詳細(xì)內(nèi)容,更多關(guān)于python 查詢歷史價(jià)格的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

鄢陵县| 封丘县| 林西县| 青岛市| 莱西市| 准格尔旗| 建昌县| 务川| 渑池县| 桃园县| 吉隆县| 开原市| 凤庆县| 石家庄市| 沁源县| 沅江市| 和平区| 德阳市| 平阳县| 宣武区| 逊克县| 石渠县| 黔东| 黑龙江省| 合江县| 湟中县| 顺义区| 海伦市| 恩施市| 韶关市| 青川县| 武宣县| 昭平县| 东辽县| 瓦房店市| 临安市| 加查县| 札达县| 陇南市| 昌平区| 米脂县|