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

百家 作者:CSDN 2020-02-16 06:00:53

作者 | 菜园子哇
责编 | 唐小引
头图 | 下载自东方 IC
出品 | CSDN 博客

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

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

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

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

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


第一步:Python 爬虫到货通知


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

无货展示
有货展示

代码如下:

'''
?jd旗舰店检查到货
'''


import?requests
import?time

#?有货通知?收件邮箱
mail?=?'xxxxx@qq.com'
#?商品的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?=?'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?=?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)

修改的地方:

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

收发件邮箱修改成自己的,可以阅读这篇 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

【End】

推荐阅读?
?隔离是否有效?北大面向新冠疫情的数据可视化分析与模拟预测
?爱荷华大选 App 投票酿闹剧的反思:为什么我们在软件工程方面如此糟糕?
?一文告诉你,如何使用Python构建一个“谷歌搜索”系统 | 内附代码
?愿得一心人:硅谷亿万富豪们的婚姻怎样?有人白首相守七十年
?Python + ElasticSearch:有了这个超级武器,你也可以报名参加诗词大会了!| 博文精选
?区块链中的哈希到底是什么?
你点的每一个在看,我认真当成了喜欢


猛戳“阅读原文”,填写中国远程办公-调查问卷

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接