買不到口罩怎麼辦?Python 爬蟲幫你時刻盯著自動下單!

買不到口罩怎麼辦?Python 爬蟲幫你時刻盯著自動下單!| 原力計劃

作者 | 菜園子哇

頭圖 | 下載自東方 IC

出品 | CSDN 博客

馬上上班了,回來的路上,上班地鐵上都是非常急需口罩的。

目前也非常難買到正品、發貨快的口罩,許多藥店都售完了。

並且,淘寶上一些新店口罩庫存寫著非常多,但不發貨,不是騙錢就是採集個人信息,銷量都非常高几 W 幾十 W 的銷量。而在京東上,即使有到貨通知,但往往還沒等到通知就被搶購完了。

這時,就輪到我 Python 爬蟲出馬了!

時刻幫我盯著京東是否到貨,到貨馬上郵件通知!接下來,就讓我們一起看 Python 爬蟲如何幫你時刻盯著到貨通知,並最終自動下單。

买不到口罩怎么办?Python 爬虫帮你时刻盯着自动下单!| 原力计划

第一步:Python 爬蟲到貨通知

首先,我們先來看幾個效果展示:

买不到口罩怎么办?Python 爬虫帮你时刻盯着自动下单!| 原力计划

無貨展示

买不到口罩怎么办?Python 爬虫帮你时刻盯着自动下单!| 原力计划

有貨展示

代碼如下:

<code>'''
jd旗艦店檢查到貨
'''

import requests
import time

# 有貨通知 收件郵箱
mail = '[email protected]'
# 商品的url
url = [
'https://c0.3.cn/stock?skuId=100011293950&area=19_1607_4773_0&venderId=1000078145&buyNum=1&choseSuitSkuIds=&cat=9192,12190,1517&extraParam={%22originid%22:%221%22}&fqsp=0&pdpin=&pduid=1580214678781491106132&ch=1&callback=jQuery4173314',
'https://c0.3.cn/stock?skuId=34424081673&area=19_1607_3639_0&venderId=656282&buyNum=1&choseSuitSkuIds=&cat=9192,12190,1517&extraParam={%22originid%22:%221%22}&fqsp=0&pdpin=&pduid=1580214678781491106132&ch=1&callback=jQuery7815511',
'https://c0.3.cn/stock?skuId=14567560031&area=6_318_320_44149&venderId=70651&buyNum=1&choseSuitSkuIds=&cat=9847,13533,13534&extraParam={%22originid%22:%221%22}&fqsp=0&pdpin=&pduid=1580535906442142991701&ch=1&callback=jQuery660434',
'https://c0.3.cn/stock?skuId=100011293952&area=19_1607_4773_0&venderId=1000078145&buyNum=1&choseSuitSkuIds=&cat=9192,12190,1517&extraParam={%22originid%22:%221%22}&fqsp=0&pdpin=&pduid=1580214678781491106132&ch=1&callback=jQuery5497502',
'https://c0.3.cn/stock?skuId=11300307432&area=2_2824_51916_0&venderId=646174&buyNum=1&choseSuitSkuIds=&cat=9192,12190,1517&extraParam={%22originid%22:%221%22}&fqsp=0&pdpin=&pduid=1580214678781491106132&ch=1&callback=jQuery4188953',
]


def sendMail(url):
import smtplib
from email.mime.text import MIMEText
# email 用於構建郵件內容
from email.header import Header

# 用於構建郵件頭

# 發信方的信息:發信郵箱,QQ 郵箱授權碼
from_addr = '[email protected]'
password = 'alpsneahzhawbfgj'

# 收信方郵箱
to_addr = mail

# 發信服務器
smtp_server = 'smtp.qq.com'

# 郵箱正文內容,第一個參數為內容,第二個參數為格式(plain 為純文本),第三個參數為編碼

msg = MIMEText(url + ' 有口罩啦', 'plain', 'utf-8')

# 郵件頭信息
msg['From'] = Header(from_addr)
msg['To'] = Header(to_addr)
msg['Subject'] = Header('有口罩啦')

# 開啟發信服務,這裡使用的是加密傳輸
server = smtplib.SMTP_SSL(host=smtp_server)
server.connect(smtp_server, 465)
# 登錄發信郵箱
server.login(from_addr, password)
# 發送郵件
server.sendmail(from_addr, to_addr, msg.as_string)
# 關閉服務器
server.quit


flag = 0
while (1):
try:

session = requests.Session
session.headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/531.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
"Connection": "keep-alive"
}
print('第' + str(flag) + '次 ' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime))
flag += 1
for i in url:
# 商品url
skuidUrl = 'https://item.jd.com/' + i.split('skuId=')[1].split('&')[0] + '.html'
response = session.get(i)
# print('有貨啦! 有貨啦! 有貨啦! : ' + skuidUrl)
# sendMail(skuidUrl)
if (response.text.find('無貨') > 0):
print('無貨 : ' + skuidUrl)
else:
print('有貨啦! 有貨啦! 有貨啦! : ' + skuidUrl)
sendMail(skuidUrl)

time.sleep(5)

except Exception as e:
import traceback
print(traceback.format_exc)
print('異常')
time.sleep(10)/<code>

修改的地方:

主要修改的是以下兩個地方,完成後就可以實時監控了。

收發件郵箱修改成自己的,可以閱讀這篇 CSDN 博文:《Python 實現自動發送郵件》,https://blog.csdn.net/LeoPhilo/article/details/89074232。

买不到口罩怎么办?Python 爬虫帮你时刻盯着自动下单!| 原力计划

第二個是,要監控的商品 URL。

买不到口罩怎么办?Python 爬虫帮你时刻盯着自动下单!| 原力计划

Google Chrome 瀏覽器按 F12 打開,點擊需要的商品和所在的地區,找到這個 stock 開頭的 URL,複製、修改或者添加在下方。

买不到口罩怎么办?Python 爬虫帮你时刻盯着自动下单!| 原力计划

在此提醒一下大家,注意不要把頻率調得太高,避免被京東反爬蟲。

买不到口罩怎么办?Python 爬虫帮你时刻盯着自动下单!| 原力计划

第二步,如何實現自動下單爬蟲?

有了到貨之後,又如何實現自動下單呢,並且還能夠避免搶購,程序自動一次只買一件?

在完成第一步的基礎上,我們進入到第二步,自動下單爬蟲。

自動下單所需 Cookie 獲取:

  • 修改位置

买不到口罩怎么办?Python 爬虫帮你时刻盯着自动下单!| 原力计划
  • 獲取方式

(1)打開 Google Chrome,登錄京東。

买不到口罩怎么办?Python 爬虫帮你时刻盯着自动下单!| 原力计划

(2)按 F12 進入我的訂單頁面,過濾出 list.action url。

买不到口罩怎么办?Python 爬虫帮你时刻盯着自动下单!| 原力计划

(3)請求下滑找到 cookie 然後複製,在代碼裡面修改就行。

买不到口罩怎么办?Python 爬虫帮你时刻盯着自动下单!| 原力计划

最後,預祝大家都能搶到口罩,身體健康開工!

更多細節,可閱讀 CSDN 博主「菜園子哇」系列文章:

買不到口罩,京東到貨通知不靠譜,python爬蟲幫你時刻盯著

https://blog.csdn.net/cyz52/article/details/104114438

京東口罩爬蟲,到貨通知爬蟲,自動下單爬蟲、python爬蟲第二篇

https://blog.csdn.net/cyz52/article/details/104177981

京東口罩爬蟲、使用教程、第三篇

https://blog.csdn.net/cyz52/article/details/104239558


分享到:


相關文章: