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

基于Python爬取京東雙十一商品價格曲線

 更新時間:2020年10月23日 09:56:39   作者:松鼠愛吃餅干  
這篇文章主要介紹了基于Python爬取雙十一商品價格曲線,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

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

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

抓取京東價格

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

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 數(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

示例結(jié)果

計劃任務(wù)

使用輕量級的 schedule 模塊每天早上 10 點抓取京東價格這一步驟

安裝 schedule 模塊

pip install schedule
def run_price_job(skuId):

  # 使用不占主線程的方式啟動 計劃任務(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點運行,get_jd_price:任務(wù)方法,skuId:任務(wù)方法的參數(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")
  )

總結(jié)

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python 爬取小說并下載的示例

    python 爬取小說并下載的示例

    這篇文章主要介紹了python 爬取小說并下載的示例,幫助大家更好的理解和學(xué)習(xí)python爬蟲,感興趣的朋友可以了解下
    2020-12-12
  • vscode配置anaconda3的方法步驟

    vscode配置anaconda3的方法步驟

    這篇文章主要介紹了vscode配置anaconda3的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 通過實例解析Python return運行原理

    通過實例解析Python return運行原理

    這篇文章主要介紹了通過實例解析Python return運行原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • Python fileinput模塊使用實例

    Python fileinput模塊使用實例

    這篇文章主要介紹了Python fileinput模塊使用實例,fileinput模塊可以遍歷文本文件的所有行,本文就給出它的使用代碼實例,需要的朋友可以參考下
    2015-05-05
  • jupyter?notebook內(nèi)核配置的圖文教程

    jupyter?notebook內(nèi)核配置的圖文教程

    Jupyter?Notebook是基于網(wǎng)頁的用于交互計算的應(yīng)用程序,下面這篇文章主要給大家介紹了關(guān)于jupyter?notebook內(nèi)核配置的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • 使用tf.keras.MaxPooling1D出現(xiàn)錯誤問題及解決

    使用tf.keras.MaxPooling1D出現(xiàn)錯誤問題及解決

    這篇文章主要介紹了使用tf.keras.MaxPooling1D出現(xiàn)錯誤問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 詳解Python判定IP地址合法性的三種方法

    詳解Python判定IP地址合法性的三種方法

    這篇文章主要介紹了詳解Python判定IP地址合法性的三種方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • python中elasticsearch_dsl模塊的使用方法

    python中elasticsearch_dsl模塊的使用方法

    這篇文章主要介紹了python中elasticsearch_dsl模塊的使用方法,elasticsearch-dsl是基于elasticsearch-py封裝實現(xiàn)的,提供了更簡便的操作elasticsearch的方法
    2022-09-09
  • 詳解TensorFlow查看ckpt中變量的幾種方法

    詳解TensorFlow查看ckpt中變量的幾種方法

    本篇文章主要介紹了詳解TensorFlow查看ckpt中變量的幾種方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • 解決Keyerror ''''acc'''' KeyError: ''''val_acc''''問題

    解決Keyerror ''''acc'''' KeyError: ''''val_acc''''問題

    這篇文章主要介紹了解決Keyerror 'acc' KeyError: 'val_acc'問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06

最新評論