一年一度的雙十一就快到了,各種砍價、蓋樓、挖現金的口令將在未來乙個月內充斥朋友圈、微信群中。玩過多次雙十一活動的小編表示一頓操作猛如虎,一看結果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 雙方由誰來負責租用運輸工具,運輸保險和貨物的進出口手續...