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

2022-10-04 08:36:07 字數 2810 閱讀 9372

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

思路抓取京東**

從商品詳情的頁面中開啟 f12 控制面板,找到包含 p.3 的鏈結,在旁邊的 preview 面板中可以看到當前商品**

def get_jd_price(skuid):

sku_detail_url = ''

sku_price_url = ''

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 =

return data

把抓取的**存入 sqlite 資料庫,使用 pycharm 的 database 功能建立乙個 sqlitewww.cppcns.com 資料庫

最終將資料插入到資料庫

# 新增

def insert(data):

conn = sqlite3.connect('price.db')

c = conn.cursor()

sql = 'insert into pric程式設計客棧e (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 cur程式設計客棧sor:

data =

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_c程式設計客棧ontinuous_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 解決生活中的小小痛點,讓錢包不再乾癟。

示例**:

用 python 製作商品歷史**查詢

題目 商品折扣後的最終價格

給你乙個陣列 prices 其中 prices i 是商店裡第 i 件商品的 商店裡正在進行 活動,如果你要買第 i 件商品,那麼你可以得到與 prices j 相等的折扣,其中 j 是滿足 j i 且 prices j prices i 的 最小下標 如果沒有滿足條件的 j 你將沒有任何折扣。請你...

python爬取京東店鋪商品價格資料 已過期

coding utf 8 import requests import re import random import time import json from requests.packages.urllib3.exceptions import insecurerequestwarning i...

商品的價格術語 外貿知識三

1 概述 在國際 中,商品的 除了要關注商品的計量單位 單位金額和計量貨幣,還要關注雙方在貨物交接中的義務,明確雙方的有關費用 風險責任劃分,稱之於 術語。在國際 中買賣雙方必然會關注下列問題 1 雙方在什麼地方 以什麼樣的方式進行貨物交接 2 雙方由誰來負責租用運輸工具,運輸保險和貨物的進出口手續...