写在前面
关于获取文章自动发送到邮箱,这类需求其实可以写好几个网站,弄完博客园,弄CSDN,弄掘金,弄其他的,网站多的是呢~哈哈
先从博客园开始,基本需求,获取python板块下面的新文章,间隔60分钟发送一次,时间太短估摸着没有多少新博客产出~
抓取的页面就是这个
https://www.cnblogs.com/cate/python
需求整理
-
获取指定页面的所有文章,记录文章相关信息,并且记录最后一篇文章的时间
-
将文章发送到指定邮箱,更新最后一篇文章的时间
实际编码环节
查看一下需要导入的模块
模块清单
import requests
import time
import re
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
from email.header import Header
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
初始化基本数据
初始化数据
def init(self):
self.start_url = “https://www.cnblogs.com/cate/python”
self.headers = {
“user-agent”: “Mozilla/… Safari/537.36”,
“referer”: “https://www.cnblogs.com/cate/python/”
}
self.pattern = r’
self.last_blog_time = 0
self.need_send_articles = []
参数说明
-
self.start_url 数据爬取地址
-
self.headers 头文件
-
self.pattern 正则表达式,用来匹配我们需要的数据内容的,你可以使用BS4,LXML,PyQuery等内容实现
-
self.last_blog_time 最后一篇博客的更新时间
-
self.need_send_articles 需要发送的博客地址
解析博客网页内容
涉及代码较多,我将关键点编写相应的注释
解析网页内容
def get_articles(self):
try:
正常的数据获取
res = requests.get(self.start_url,headers=self.headers,timeout=3)
except Exception as e:
print(“error %s”% e)
time.sleep(3)
return self.get_articles() # 重新发起请求
html = res.text
这个地方的正则表达式是考验你正则功底的地方了
all = re.findall(self.pattern,html)
判断,如果没有新文章
last_time = self.change_time(all[0][3].strip().replace("发布于 ", “”))
if last_time <= self.last_blog_time:
print(“没有新文章更新”)
return
for item in all:
public_time = item[3]
if public_time:
格式化时间
public_time = self.change_time(public_time.strip().replace(“发布于 “,””))
if(public_time > self.last_blog_time):
self.need_send_articles.append({
“url”:item[0],
“title”:item[1],
“author”:item[2],
“time”:public_time
})
文章获取完毕,更新时间
self.last_blog_time = last_time
测试输出
print(self.need_send_articles)
print(“现在文章的最后时间为”,self.last_blog_time)
测试输出
时间字符串转换成时间戳
文末有福利领取哦~
👉一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
👉二、Python必备开发工具
👉三、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉 四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
👉五、Python练习题
检查学习结果。
👉六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!