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

2022-09-26 10:15:34 字數 2923 閱讀 4917

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

思路第一步抓取商品的**存入 python 自帶的 sqlite 資料庫每天定時抓取商品**使用 pyecharts 模組繪製**折線圖,讓低價一gkjganrllf目了然

抓取京東**

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

defget_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 功能建立乙個 sqlite 資料庫

最終將資料插入到資料庫

# 新增

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"), da程式設計客棧ta.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 =

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:任務方法的引數

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爬取京東雙十一商品**曲線

本文位址: /jiaoben/python/357229.html

京東雙十一

誕生於2003年,天貓雙十一則開始於2009年的11月11日。由於日期是 1 的重複,這一天又被稱為 光棍節 因此推出了全場半價包郵活動,讓 單身狗們 一次買個夠。不料一經推出,就火爆了中國,引發了全民購物狂歡,銷售資料更是年年重新整理紀錄。根據公開報道整理,2009年的第乙個雙十一,參與的商家較少...

python京東商品 Python爬取京東商品資料

對京東某一商品資訊頁面的html 進行分析。能夠發現它的圖書產品資訊頁面都含有這樣一段 不同類的商品頁面有些不同 window.pageconfig 顯然這就是我們須要的商品資訊,python 例如以下 import json import re import urllib for i in ran...

Python爬取京東商品

自動開啟京東首頁,並輸入你要搜尋的東西,進入介面進行爬取資訊 from selenium import webdriver import time class jdspider object def init self self.browser webdriver.chrome self.url s...