监控售卖网站新品发布并邮件推送

 

需求是,当有新品发布时,能立即收到邮件提醒。因为抢单的人很少,所以只需要完成提醒就行。

思路就是,利用python的requests库间隔10秒去获取下网页内容,检测商品列表中第一个商品的商品编号是否改变,如果改变就说明是新品,需要发送邮件。

封装了下worker类,主要函数在check中:


 
 
  1. import requests
  2. import traceback
  3. import time
  4. from bs4 import BeautifulSoup
  5. import logging
  6. from send_email import SendMail
  7. logging.basicConfig(filename= 'watch.log', level=logging.WARNING,
  8. format= '%(asctime)s %(filename)s[line:%(lineno)d] %(message)s', datefmt= '%a, %d %b %Y %H:%M:%S')
  9. class Worker():
  10. def __init__(self,start):
  11. self.start=start
  12. self.firstStart= True
  13. def check(self):
  14. logging.warning( "old:"+self.start)
  15. s=requests.Session()
  16. ret=s.get( "http://matenrow.net/17.html")
  17. soup_string = BeautifulSoup(ret.content, "html.parser")
  18. book_a = soup_string.findAll(attrs={ "class": "M9_1_font_other"})
  19. book=book_a[ 0]
  20. if book.string!=self.start:
  21. self.start=book.string
  22. logging.warning( "old:{},new:{}".format(self.start,book.string))
  23. return True
  24. else:
  25. return False

 接下来就是放到一个循环中,sleep10秒去执行下:


 
 
  1. if __name__ == '__main__':
  2. worker=Worker( "G1960")
  3. while True:
  4. try:
  5. ret=worker.check()
  6. logging.warning(ret)
  7. if worker.firstStart:
  8. worker.firstStart= False
  9. continue
  10. if ret:
  11. SendMail( "xxxx@qq.com", "提醒新产品", "标号:{}".format(worker.start))
  12. except Exception as e:
  13. logging.warning( "err:{},trace:{}".format(str(e),traceback.format_exc()))
  14. time.sleep( 10)

发送邮件SendMail的代码, 可参考这篇博客

原文:一只小coder
连接:https://blog.csdn.net/u014633966/article/details/86073961

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值