2024年最新利用Python爬取获取博客园文章定时发送到邮箱

写在前面


关于获取文章自动发送到邮箱,这类需求其实可以写好几个网站,弄完博客园,弄CSDN,弄掘金,弄其他的,网站多的是呢~哈哈

先从博客园开始,基本需求,获取python板块下面的新文章,间隔60分钟发送一次,时间太短估摸着没有多少新博客产出~

抓取的页面就是这个

https://www.cnblogs.com/cate/python

需求整理


  1. 获取指定页面的所有文章,记录文章相关信息,并且记录最后一篇文章的时间

  2. 将文章发送到指定邮箱,更新最后一篇文章的时间

实际编码环节


查看一下需要导入的模块

模块清单

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’

[\s\S.] ?

(.?)

[\s\S.] ?
[\s\S.]? (.?)([\s\S.]?)

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所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。img

👉二、Python必备开发工具

img
👉三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
img

👉 四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
img

👉五、Python练习题

检查学习结果。
img

👉六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
img

img

👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值