专栏名称: AI科技大本营
迎来到AI科技大本营。这里汇集了优秀的AI学习者,技术大咖和产业领袖;提供接地气的实战课程。在这里和优秀的人一起成长。
目录
相关文章推荐
新智元  ·  Grok ... ·  13 小时前  
爱可可-爱生活  ·  【[134星]赛博禅师:基于DeepSeek ... ·  13 小时前  
爱可可-爱生活  ·  【[9.2k星]Wave ... ·  19 小时前  
爱可可-爱生活  ·  【[122星]funtrace:一款为C/C ... ·  3 天前  
51好读  ›  专栏  ›  AI科技大本营

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

AI科技大本营  · 公众号  · AI  · 2020-02-16 17:15

正文



作者 | 菜园子哇
编辑 | 唐小引
来源 | CSDN 博客


马上上班了,回来的路上,上班地铁上都是非常急需口罩的。
目前也非常难买到正品、发货快的口罩,许多药店都售完了。
并且,淘宝上一些新店口罩库存写着非常多,但不发货,不是骗钱就是采集个人信息,销量都非常高几 W 几十 W 的销量。而在京东上,即使有到货通知,但往往还没等到通知就被抢购完了。
这时,就轮到我 Python 爬虫出马了!
时刻帮我盯着京东是否到货, 到货马上邮件通知!接下来,就让我们一起看 Python 爬虫如何帮你时刻盯着到货通知,并最终自动下单。

第一步:Python 爬虫到货通知


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


无货展示
有货展示


代码如下:


'''
 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)


修改的地方:
主要修改的是以下两个地方,完成后就可以实时监控了。
收发件邮箱修改成自己的,可以阅读这篇 CSDN 博文:《Python 实现自动发送邮件》, https://blog.csdn.net/LeoPhilo/article/details/89074232
第二个是,要监控的商品 URL。
Google Chrome 浏览器按 F12 打开,点击需要的商品和所在的地区,找到这个 stock 开头的 URL,复制、修改或者添加在下方。
在此提醒一下大家, 注意不要把频率调得太高,避免被京东反爬虫。


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

有了到货之后,又如何实现自动下单呢,并且还能够避免抢购,程序自动一次只买一件?
在完成第一步的基础上,我们进入到第二步,自动下单爬虫。
自动下单所需 Cookie 获取:
  • 修改位置

  • 获取方式

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






请到「今天看啥」查看全文