前几天闲来无事,看到了一个羊毛线报网站,发现每日都在更新一些比较好的内容,比如领券、云盘、加油优惠、免费会员等一手信息,自己按照操作还撸了不少的优惠,但是每天手动打开这个网站还是挺麻烦的,主要有两点功能。

  • 自动抓取最新的羊毛日报信息
  • 将获取到的信息自动发送到邮箱

这样利用每天上班在地铁上的时间,就可以阅览下信息,如果有价值就可以直接操作了,非常的方便!

代码地址

  • https://github.com/AnTi-anti/Python_Demo

思路

抓取内容

虽然网页有很多优惠信息,但是并不是所有的信息都值得被推送,比如有些过期了的优惠活动,这里我默认抓取前五条时间最新的信息,如果你有需求,也可以自己修改。

网页的元素也是简单到不能再简单了,没有反爬,也不需要登录。
所有的信息都在下面这个li标签中

liTags = soup.find_all('li', attrs={'class': 'grid-item post-list-item'})


至于元素,我们只要文本内容、链接和时间就可以。

直接用BS4进行抓取就可以。

首先获取网页内容,我们用一个字典进行存储。

def get_content():url = 'https://ym.today/yangmao'ret = requests.get(url)test = ret.textcomments = []soup = BeautifulSoup(test, 'lxml')liTags = soup.find_all('li', attrs={'class': 'grid-item post-list-item'})for li in liTags:comment = {}try:comment['content'] = li.find('a').text.strip()comment['URL'] = li.find('a')['href']comment['time'] = li.find('time')['datetime']comments.append(comment)except:print('出了点小问题')return comments


接着,为了后续处理方便,我们将字典存储为一个CSV表格。

def Out2File(dict):df = pd.DataFrame()list_content = []list_url = []list_time = []for comment in dict:list_content.append(comment['content'])list_url.append(comment['URL'])list_time.append(comment['time'])df['content'] = list_contentdf['url'] = list_urldf['time'] = list_timedf = df.head(6)df.to_csv('羊毛.csv', index=False)  # 输出为csv文本格式return df


最后就是发送到邮箱这一步骤了,这里我们采用的邮箱模板是QQ邮箱,如果你想要别的邮箱,也可以自己选择对应的发送模板。
需要你自己修改的参数如下

  • 发送人的邮箱
  • 接收人的邮箱
  • 接收人邮箱的smtp 值
  • 指定发送的时间

如何获取SMTP值,打开QQ邮箱,点击设置,账户,

找到IMAP/SMTP,点击开启,吧得到的SMTP值复制到代码中即可。

def email():df = pd.read_csv('羊毛.csv')number = '发送人的邮箱'smtp = ''to = '接收人的邮箱'  # 可以是非QQ的邮箱mer = MIMEMultipart()# 设置邮件正文内容head = '''<p>羊毛最新信息</p><p><a href="{}">{}--{}</a></p><p>羊毛最新前五条信息</p><p><a href="{}">{}--{}</a></p><p><a href="{}">{}--{}</a></p><p><a href="{}">{}--{}</a></p><p><a href="{}">{}--{}</a></p><p><a href="{}">{}--{}</a></p>'''.format(df.iloc[0, :]['url'], df.iloc[0, :]['content'],df.iloc[0, :]['time'],df.iloc[1, :]['url'], df.iloc[1, :]['content'],df.iloc[1, :]['time'],df.iloc[2, :]['url'], df.iloc[2, :]['content'],df.iloc[2, :]['time'],df.iloc[3, :]['url'], df.iloc[3, :]['content'],df.iloc[3, :]['time'],df.iloc[4, :]['url'], df.iloc[4, :]['content'],df.iloc[4, :]['time'],df.iloc[5, :]['url'], df.iloc[5, :]['content'],df.iloc[5, :]['time'])mer.attach(MIMEText(head, 'html', 'utf-8'))fujian = MIMEText(open('羊毛.csv', 'rb').read(), 'base64', 'utf-8')fujian["Content-Type"] = 'application/octet-stream'  # 附件内容fujian.add_header('Content-Disposition', 'file', filename=('utf-8', '', '羊毛.csv'))mer.attach(fujian)mer['Subject'] = '每日羊毛信息'  # 邮件主题mer['From'] = number  # 发送人mer['To'] = to  # 接收人# 5.发送邮件s = smtplib.SMTP_SSL('smtp.qq.com', 465)s.login(number, smtp)s.send_message(mer)  # 发送邮件s.quit()print('成功发送')

成功接收的右键格式如下:

这样就可以愉快的浏览信息了。

如果不想每天开着脚本,还可以使用Windows任务计划自动运行Python程序,也是很方便的。

参考文献

  • 羊毛日报
  • 利用 Python 自动抓取微博热搜,并定时发送至邮箱
  • 使用Windows任务计划自动运行Python程序

批量抓取羊毛网站信息,定时自动发送到邮箱进行阅览相关推荐

  1. qpython爬虫_python爬虫教程:批量抓取 QQ 群信息

    前言 本文讲解Python批量抓取 QQ 群信息,包括群名称.群号.群人数.群主.地域.分类.标签.群简介等内容,返回 XLS / CSV / JSON 结果文件. 基本环境配置 版本:Python2 ...

  2. 简单的Python抓取招聘网站信息(1)

    作为一名大四狗刚刚经历完找工作的浪潮,发现每天需要去各类招聘网站进行看招聘信息非常麻烦,想到用Python爬虫抓取招聘网站的招聘信息.同届的同学大多找完了工作,文章就给将来需要的同学看吧~因为不着急, ...

  3. Python 爬虫实现:抓取电影网站信息并入库

    文章目录 一.环境搭建 1.下载安装包 2.修改环境变量 3.安装依赖模块 二.代码开发 三.运行测试 1.新建电影信息表 2.代码运行 四.问题排查和修复 1.空白字符报错 2.请求报错 一.环境搭 ...

  4. python爬虫:批量抓取代理ip,进行验证,抓取豆瓣网站影视信息

    本文作为学习笔记参考用: [1]批量抓取代理ip: 找到第三方ip代理的网站,进行分析,并批量抓取,抓取程序放到Proxies_spider.py中,如下所示: import re import re ...

  5. python爬取新浪微博数据中心_Python爬虫框架Scrapy实战之批量抓取招聘信息

    网络爬虫抓取特定网站网页的html数据,但是一个网站有上千上万条数据,我们不可能知道网站网页的url地址,所以,要有个技巧去抓取网站的所有html页面.Scrapy是纯Python实现的爬虫框架,用户 ...

  6. node抓取58同城信息_如何使用标准库和Node.js轻松抓取网站以获取信息

    node抓取58同城信息 网络抓取工具是一种工具,可让我们选择网站的非结构化数据并将其转换为结构化数据库. 那么,网络刮板将在哪里派上用场呢? 我列出了我最喜欢的用例,以使您对启动自己的应用感到兴奋! ...

  7. 使用IDM批量抓取音效素材下载

    IDM下载器站点抓取功能,能够抓取网站上的图片.音频.视频.PDF.压缩包等等文件.更重要的是,能够实现批量抓取操作,省时省力.今天就来看一下,如何用IDM巧妙的批量抓取音效素材. 1.进入音效合辑界 ...

  8. 教您使用java爬虫gecco抓取JD全部商品信息

    转自:http://www.geccocrawler.com/demo-jd/ gecco爬虫 如果对gecco还没有了解可以参看一下gecco的github首页.gecco爬虫十分的简单易用,JD全 ...

  9. selenium抓取_使用Selenium的网络抓取电子商务网站

    selenium抓取 In this article we will go through a web scraping process of an E-Commerce website. I hav ...

  10. python正则匹配找到所有的浮点数_如何利用Python抓取静态网站及其内部资源

    遇到的需求 前段时间需要快速做个静态展示页面,要求是响应式和较美观.由于时间较短,自己动手写的话也有点麻烦,所以就打算上网找现成的. 中途找到了几个页面发现不错,然后就开始思考怎么把页面给下载下来. ...

最新文章

  1. 无法启动程序,拒绝访问解决方法
  2. .net 显示时间为YYYY-MM-DD格式
  3. sql注入学习——布尔盲注
  4. 全国胸最小的省是哪个,你知道吗?| 今日最佳
  5. 线上排查 | 线上Redis负载暴涨100%,业务中断,这样排查很赞!
  6. Java程序员最喜爱的编辑器之一(Sublime Text 3)
  7. 网上收集总结一下mssql( 部分)
  8. RabbitMQ下载与安装(window版) 自我总结
  9. 考虑云计算来降成本:良药或毒药?
  10. 基于BP神经网络的手写体识别
  11. python-图片转pdf
  12. pwnablekr-asm-seccomp-sandbox
  13. 时间维度表-数仓中最重要的维度之日期维度
  14. python arcgis 批量裁剪栅格文件
  15. 阿里巴巴开发规范--精选常用规范
  16. 网络技能大赛-高职组计算机网络应用竞赛竞赛-服务器JCOS部署02(一根网线不连接交换机)[附:过期后操作]
  17. 企业微信HTTP协议调用,逆行开发,不受本地配置限制
  18. 2021年广西甘蔗播种面积、产量及进口情况分析:广西甘蔗产量占全国甘蔗总产量的68.56%[图]
  19. SQL-基础学习1--SELECT,LIMIT,DISTINCT,注释
  20. ArcGIS基础实验操作100例--实验22NoData数据处理

热门文章

  1. 如何像专业人士一样使用 Google 学术搜索
  2. web请求报出 “超过了最大请求长度”
  3. 华为防火墙IPSec详解与配置实验
  4. Leetcode 黄金分割点等级简单
  5. 【毕业设计】深度学习垃圾分类系统 - python 卷积神经网络
  6. 【LinuxOS】Ubuntu学习感悟
  7. 苹果手机铃声制作教程
  8. 基于Python的指数基金量化投资 - 指数的市盈率和市净率计算
  9. 该内存不能read written常见原因
  10. 共享打印机服务器脱机状态,共享打印机脱机无法打印