日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python爬虫-京东商品到货自动邮件通知

發布時間:2023/12/8 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python爬虫-京东商品到货自动邮件通知 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 京東爬蟲
    • 網頁分析
    • 代碼實現
    • 效果演示
  • 小結

前言

前陣子疫情嚴重期間,口罩遭到瘋搶,各大電商平臺口罩供不應求。本文簡述如何通過 Python 爬蟲不斷監控京東商品是否有貨,并在到貨時自動發送商品到貨通知郵件到指定的郵箱。

京東爬蟲

網頁分析

先來看看京東無貨的某牌一次性使用醫用口罩(為了找到無貨的,無奈選了寶島):


為了獲得查詢當前商品是否有貨的API,重新選擇配送地區并抓包觀察:


成功找到目標API:

https://c0.3.cn/stock?skuId=100006979473&area=32_2768_53502_54370&venderId=1000096602&buyNum=1&choseSuitSkuIds=&cat=9192,12190,1517&extraParam={%22originid%22:%221%22}&fqsp=0&pdpin=&pduid=1597738524154116867159&ch=1&callback=jQuery9707334

繼續獲取以下商品的查詢請求進行本次爬蟲實踐:


以上三種商品的URL分別對應:

1、京東東造口罩(無貨):https://c0.3.cn/stock?skuId=100006979473&area=32_2768_53502_54370&venderId=1000096602&buyNum=1&choseSuitSkuIds=&cat=9192,12190,1517&extraParam={%22originid%22:%221%22}&fqsp=0&pdpin=&pduid=1597738524154116867159&ch=1&callback=jQuery9707334; 2、東方紅口罩(有貨): https://c0.3.cn/stock?skuId=100012198150&area=32_2768_53502_54370&venderId=1000304541&cat=14065,14099,14103&buyNum=1&choseSuitSkuIds=&extraParam={%22originid%22:%221%22}&ch=1&fqsp=0&pduid=1597738524154116867159&pdpin=&detailedAdd=null&callback=jQuery3905354; 3、內網攻防書籍(無貨):https://c0.3.cn/stock?skuId=12639103&cat=1713,3287,3801&venderId=0&area=32_2768_53502_54370&buyNum=1&choseSuitSkuIds=&extraParam={%22originid%22:%221%22}&ch=1&fqsp=0&pduid=1597738524154116867159&pdpin=&coord=&detailedAdd=&callback=jQuery5705850

代碼實現

先來看完整代碼:

'''京東商品到貨郵件通知 ''' import requests import time# 有貨通知 收件郵箱 mail = '130XXXXXXXX@163.com' # 商品的url url = ['https://c0.3.cn/stock?skuId=100006979473&area=32_2768_53502_54370&venderId=1000096602&buyNum=1&choseSuitSkuIds=&cat=9192,12190,1517&extraParam={%22originid%22:%221%22}&fqsp=0&pdpin=&pduid=1597738524154116867159&ch=1&callback=jQuery9707334','https://c0.3.cn/stock?skuId=100012198150&area=32_2768_53502_54370&venderId=1000304541&cat=14065,14099,14103&buyNum=1&choseSuitSkuIds=&extraParam={%22originid%22:%221%22}&ch=1&fqsp=0&pduid=1597738524154116867159&pdpin=&detailedAdd=null&callback=jQuery3905354','https://c0.3.cn/stock?skuId=12639103&cat=1713,3287,3801&venderId=0&area=32_2768_53502_54370&buyNum=1&choseSuitSkuIds=&extraParam={%22originid%22:%221%22}&ch=1&fqsp=0&pduid=1597738524154116867159&pdpin=&coord=&detailedAdd=&callback=jQuery5705850' ]def sendMail(url):import smtplibfrom email.mime.text import MIMEText# email 用于構建郵件內容from email.header import Header# 用于構建郵件頭# 發信方的信息:發信郵箱,QQ 郵箱授權碼from_addr = '142XXXXXXXX@qq.com'password = 'mfXXXXXXXXXXXXXXXXX'# 收信方郵箱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 += 1for i in url:# 商品urlskuidUrl = 'https://item.jd.com/' + i.split('skuId=')[1].split('&')[0] + '.html'response = session.get(i)if (response.text.find('無貨') > 0):print('無貨 : ' + skuidUrl)else:print('有貨啦! 有貨啦! 有貨啦! : ' + skuidUrl)sendMail(skuidUrl)time.sleep(5)except Exception as e:import tracebackprint(traceback.format_exc())print('異常')time.sleep(10)

上面的收件郵箱是我的163網易郵箱,發件郵箱是QQ郵箱,發件密碼(不是QQ登陸密碼)的獲取和發件功能需要在QQ郵箱的 “設置-賬戶” 里開啟如下所示功能:

效果演示

在Pycharm執行以上腳本,如下圖所示:


此時查看網易云郵箱,收到到貨提醒郵件:

小結

真實使用情況下可以在VPS主機持續執行該腳本。但問題來了,爬京東違法不,會不會蹲監獄?個人感覺和12306網站同理,也就是我只買我自己用的應該不會進去,但是黃牛會進。最后需要注意的是不要把腳本的爬取頻率調的太高,避免被京東反爬蟲。

總結

以上是生活随笔為你收集整理的Python爬虫-京东商品到货自动邮件通知的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。