博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
买不到口罩怎么办?Python 爬虫帮你时刻盯着自动下单!| 原力计划
阅读量:2503 次
发布时间:2019-05-11

本文共 4453 字,大约阅读时间需要 14 分钟。

作者 | 菜园子哇

责编 | 唐小引

头图 | 下载自东方 IC

出品 | CSDN 博客

马上上班了,回来的路上,上班地铁上都是非常急需口罩的。

目前也非常难买到正品、发货快的口罩,许多药店都售完了。

并且,淘宝上一些新店口罩库存写着非常多,但不发货,不是骗钱就是采集个人信息,销量都非常高几 W 几十 W 的销量。而在京东上,即使有到货通知,但往往还没等到通知就被抢购完了。

这时,就轮到我 Python 爬虫出马了!

时刻帮我盯着京东是否到货,到货马上邮件通知!接下来,就让我们一起看 Python 爬虫如何帮你时刻盯着到货通知,并最终自动下单。

第一步:Python 爬虫到货通知

首先,我们先来看几个效果展示:

无货展示

有货展示

代码如下:

''' jd旗舰店检查到货'''import requestsimport time# 有货通知 收件邮箱mail = 'xxxxx@qq.com'# 商品的urlurl = [    '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 = 'xxxxxxxx@qq.com'    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 = 0while (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)

修改的地方:

主要修改的是以下两个地方,完成后就可以实时监控了。

收发件邮箱修改成自己的,可以阅读这篇 CSDN 博文:《Python 实现自动发送邮件》,https://blog.csdn.net/LeoPhilo/article/details/89074232。

第二个是,要监控的商品 URL。

Google Chrome 浏览器按 F12 打开,点击需要的商品和所在的地区,找到这个 stock 开头的 URL,复制、修改或者添加在下方。

在此提醒一下大家,注意不要把频率调得太高,避免被京东反爬虫。

第二步,如何实现自动下单爬虫?

有了到货之后,又如何实现自动下单呢,并且还能够避免抢购,程序自动一次只买一件?

在完成第一步的基础上,我们进入到第二步,自动下单爬虫。

自动下单所需 Cookie 获取:

  • 修改位置

  • 获取方式

(1)打开 Google Chrome,登录京东。

(2)按 F12 进入我的订单页面,过滤出 list.action url。

(3)请求下滑找到 cookie 然后复制,在代码里面修改就行。

最后,预祝大家都能抢到口罩,身体健康开工!

更多细节,可阅读 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

技术战“疫”,贾扬清、李飞飞要给程序员直播讲AI技术!

2月18日、2月20日,阿里云CIO学院攻“疫”技术课程正式开启。您将获得与达摩院数据库首席科学家 、阿里巴巴集团副总裁、ACM 杰出科学家李飞飞,Caffe之父、ONNX创始人、阿里巴巴集团副总裁贾扬清,阿里巴巴集团副总裁、阿里 CIO 学院院长胡臣杰等顶级技术专家直播互动的机会。

热 文 推 荐

你点的每个“在看”,我都认真当成了喜欢

你可能感兴趣的文章
期货市场技术分析05_交易量和持仓兴趣
查看>>
TB交易开拓者入门教程
查看>>
TB创建公式应用dll失败 请检查用户权限,终极解决方案
查看>>
python绘制k线图(蜡烛图)报错 No module named 'matplotlib.finance
查看>>
talib均线大全
查看>>
期货市场技术分析06_长期图表和商品指数
查看>>
期货市场技术分析07_摆动指数和相反意见理论
查看>>
满屏的指标?删了吧,手把手教你裸 K 交易!
查看>>
不吹不黑 | 聊聊为什么要用99%精度的数据回测
查看>>
对于模拟交易所引发的思考
查看>>
高频交易的几种策略
查看>>
量化策略回测TRIXKDJ
查看>>
量化策略回测唐安奇通道
查看>>
CTA策略如何过滤部分震荡行情?
查看>>
量化策略回测DualThrust
查看>>
量化策略回测BoolC
查看>>
量化策略回测DCCV2
查看>>
mongodb查询优化
查看>>
五步git操作搞定Github中fork的项目与原作者同步
查看>>
git 删除远程分支
查看>>