欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python 制作查詢商品歷史價格的小工具

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

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

思路

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

抓取京東價格

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

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

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

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

# 新增
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:任務方法的參數(shù)
  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 解決生活中的小小痛點,讓錢包不再干癟。

示例代碼:

Python 制作商品歷史價格查詢

以上就是Python 制作查詢商品歷史價格的小工具的詳細內容,更多關于python 查詢歷史價格的資料請關注腳本之家其它相關文章!

相關文章

  • 深入解析Python中的集合類型操作符

    深入解析Python中的集合類型操作符

    這篇文章主要介紹了深入解析Python中的集合類型操作符,是Python入門學習中的基礎知識,需要的朋友可以參考下
    2015-08-08
  • Python實現(xiàn)動態(tài)二維碼生成的示例代碼

    Python實現(xiàn)動態(tài)二維碼生成的示例代碼

    這篇文章主要和大家分享兩個制作二維碼的Python庫,可以生成普通的二維碼、圖片背景版二維碼、動圖GIF版二維。文中的示例代碼講解詳細,感興趣的可以學習一下
    2022-05-05
  • 淺談Python腳本開頭及導包注釋自動添加方法

    淺談Python腳本開頭及導包注釋自動添加方法

    今天小編就為大家分享一篇淺談Python腳本開頭及導包注釋自動添加方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python中使用PyMySQL模塊的方法詳解

    Python中使用PyMySQL模塊的方法詳解

    Python中的pymysql模塊是用于連接MySQL數(shù)據(jù)庫的一個第三方庫,它提供了一套API,使得Python程序員能夠方便地執(zhí)行SQL語句、操作數(shù)據(jù)庫,下面這篇文章主要給大家介紹了關于Python中使用PyMySQL模塊的相關資料,需要的朋友可以參考下
    2024-08-08
  • python打包pyinstall的實現(xiàn)步驟

    python打包pyinstall的實現(xiàn)步驟

    PyInstaller可將Python代碼打包成單個可執(zhí)行文件,本文主要介紹了python打包pyinstall的實現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • 31個必備的Python字符串方法總結

    31個必備的Python字符串方法總結

    字符串是Python中基本的數(shù)據(jù)類型,幾乎在每個Python程序中都會使用到它。本文為大家總結了Python中必備的31個字符串方法,需要的可以參考一下
    2022-03-03
  • Python中new方法的詳解

    Python中new方法的詳解

    今天小編就為大家分享一篇關于Python中new方法的詳解,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Python實現(xiàn)最短路徑問題的方法

    Python實現(xiàn)最短路徑問題的方法

    本篇章主要介紹圖的最短路徑問題,包括Dijkstra算法和Floyd算法.并用Python代碼實現(xiàn),需要的朋友可以參考下
    2021-06-06
  • python開發(fā)中兩個list之間傳值示例

    python開發(fā)中兩個list之間傳值示例

    這篇文章主要介紹了python開發(fā)中兩個list列表之間傳值的方法,有需要的朋友可以借鑒參考下,希望可以有所幫助,希望大家共同學習,共同進步
    2021-09-09
  • 深入探討opencv圖像矯正算法實戰(zhàn)

    深入探討opencv圖像矯正算法實戰(zhàn)

    在機器視覺中,對于圖像的處理有時候因為放置的原因導致ROI區(qū)域傾斜,這個時候我們會想辦法把它糾正為正確的角度視角來,本文主要介紹了opencv圖像矯正算法,感興趣的可以了解一下
    2021-05-05

最新評論