批量抓取羊毛网站信息,定时自动发送到邮箱进行阅览
前几天闲来无事,看到了一个羊毛线报网站,发现每日都在更新一些比较好的内容,比如领券、云盘、加油优惠、免费会员等一手信息,自己按照操作还撸了不少的优惠,但是每天手动打开这个网站还是挺麻烦的,主要有两点功能。
- 自动抓取最新的羊毛日报信息
- 将获取到的信息自动发送到邮箱
这样利用每天上班在地铁上的时间,就可以阅览下信息,如果有价值就可以直接操作了,非常的方便!
代码地址
- 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程序
批量抓取羊毛网站信息,定时自动发送到邮箱进行阅览相关推荐
- qpython爬虫_python爬虫教程:批量抓取 QQ 群信息
前言 本文讲解Python批量抓取 QQ 群信息,包括群名称.群号.群人数.群主.地域.分类.标签.群简介等内容,返回 XLS / CSV / JSON 结果文件. 基本环境配置 版本:Python2 ...
- 简单的Python抓取招聘网站信息(1)
作为一名大四狗刚刚经历完找工作的浪潮,发现每天需要去各类招聘网站进行看招聘信息非常麻烦,想到用Python爬虫抓取招聘网站的招聘信息.同届的同学大多找完了工作,文章就给将来需要的同学看吧~因为不着急, ...
- Python 爬虫实现:抓取电影网站信息并入库
文章目录 一.环境搭建 1.下载安装包 2.修改环境变量 3.安装依赖模块 二.代码开发 三.运行测试 1.新建电影信息表 2.代码运行 四.问题排查和修复 1.空白字符报错 2.请求报错 一.环境搭 ...
- python爬虫:批量抓取代理ip,进行验证,抓取豆瓣网站影视信息
本文作为学习笔记参考用: [1]批量抓取代理ip: 找到第三方ip代理的网站,进行分析,并批量抓取,抓取程序放到Proxies_spider.py中,如下所示: import re import re ...
- python爬取新浪微博数据中心_Python爬虫框架Scrapy实战之批量抓取招聘信息
网络爬虫抓取特定网站网页的html数据,但是一个网站有上千上万条数据,我们不可能知道网站网页的url地址,所以,要有个技巧去抓取网站的所有html页面.Scrapy是纯Python实现的爬虫框架,用户 ...
- node抓取58同城信息_如何使用标准库和Node.js轻松抓取网站以获取信息
node抓取58同城信息 网络抓取工具是一种工具,可让我们选择网站的非结构化数据并将其转换为结构化数据库. 那么,网络刮板将在哪里派上用场呢? 我列出了我最喜欢的用例,以使您对启动自己的应用感到兴奋! ...
- 使用IDM批量抓取音效素材下载
IDM下载器站点抓取功能,能够抓取网站上的图片.音频.视频.PDF.压缩包等等文件.更重要的是,能够实现批量抓取操作,省时省力.今天就来看一下,如何用IDM巧妙的批量抓取音效素材. 1.进入音效合辑界 ...
- 教您使用java爬虫gecco抓取JD全部商品信息
转自:http://www.geccocrawler.com/demo-jd/ gecco爬虫 如果对gecco还没有了解可以参看一下gecco的github首页.gecco爬虫十分的简单易用,JD全 ...
- selenium抓取_使用Selenium的网络抓取电子商务网站
selenium抓取 In this article we will go through a web scraping process of an E-Commerce website. I hav ...
- python正则匹配找到所有的浮点数_如何利用Python抓取静态网站及其内部资源
遇到的需求 前段时间需要快速做个静态展示页面,要求是响应式和较美观.由于时间较短,自己动手写的话也有点麻烦,所以就打算上网找现成的. 中途找到了几个页面发现不错,然后就开始思考怎么把页面给下载下来. ...
最新文章
- 无法启动程序,拒绝访问解决方法
- .net 显示时间为YYYY-MM-DD格式
- sql注入学习——布尔盲注
- 全国胸最小的省是哪个,你知道吗?| 今日最佳
- 线上排查 | 线上Redis负载暴涨100%,业务中断,这样排查很赞!
- Java程序员最喜爱的编辑器之一(Sublime Text 3)
- 网上收集总结一下mssql( 部分)
- RabbitMQ下载与安装(window版) 自我总结
- 考虑云计算来降成本:良药或毒药?
- 基于BP神经网络的手写体识别
- python-图片转pdf
- pwnablekr-asm-seccomp-sandbox
- 时间维度表-数仓中最重要的维度之日期维度
- python arcgis 批量裁剪栅格文件
- 阿里巴巴开发规范--精选常用规范
- 网络技能大赛-高职组计算机网络应用竞赛竞赛-服务器JCOS部署02(一根网线不连接交换机)[附:过期后操作]
- 企业微信HTTP协议调用,逆行开发,不受本地配置限制
- 2021年广西甘蔗播种面积、产量及进口情况分析:广西甘蔗产量占全国甘蔗总产量的68.56%[图]
- SQL-基础学习1--SELECT,LIMIT,DISTINCT,注释
- ArcGIS基础实验操作100例--实验22NoData数据处理