文章定时自动采集(._send_articles=[]参数说明)
优采云 发布时间: 2021-09-06 17:23文章定时自动采集(._send_articles=[]参数说明)
[\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):
试试:
#正常数据获取
res = requests.get(self.start_url,headers=self.headers,timeout=3)
例外为 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("Posted on ", ""))
if last_time self.last_blog_time):
self.need_send_articles.append({
"url":item[0],
"title":item[1],
"作者":item[2],
"time":public_time
})
#文章完成,更新时间
self.last_blog_time = last_time
##### 测试输出
打印(self.need_send_articles)
print("文章的最后一次是现在",self.last_blog_time)
##### 测试输出
将时间字符串转换为时间戳
直接用timestamp来比较size,很方便
def change_time(self,need_change_time):
'''
#时间换算
:param need_change_time:
:return:返回时间戳
'''
time_array = time.strptime(need_change_time, "%Y-%m-%d %H:%M")
time_stamp = int(time.mktime(time_array))
返回时间戳
邮件发送链接
本博客由QQ邮箱发送
QQ邮箱文章发来的一些参考资料,为了大家方便,我罗列一下
参考文章
#
#
#
#
因为我用的是QQ邮箱,有些地方设置比较麻烦,发短信要2毛钱。建议大家使用其他邮箱,设置一样~~
发送邮件 send_email 函数
看看上面的文章后,你就可以相应地编写发送的电子邮件,非常简单
QQ邮箱是经过SSL认证的邮箱系统,所以使用QQ邮箱发送邮件,需要创建SMTP_SSL对象而不是SMTP对象
#发送邮件
def send_email(self,articles):
smtp = smtplib.SMTP_SSL() #注意这个地方
smtp.connect("",465)
smtp.login("", "授权码")
发件人=''
receivers = ['Find your own other email@'] # 接收邮件,可以设置为你的QQ邮箱或其他邮箱
#完善发件人、收件人、主题信息
message = MIMEMultipart()
message['From'] = formataddr(["blog采集器", sender])
message['To'] = formataddr(["hi,baby",''.join(receivers)])
subject ='你有一个新的采集到文章的列表'
message['Subject'] = Header(subject,'utf-8')
# 身体部位
html = ""
对于文章中的项目:
html+=("
{title}--文章author{author}--发布时间{time}
".format(title=item["title"],url=item["url"],author=item["author"],time=item["time"]))
textmessage = MIMEText('
新采集到了文章list
' +html,
'html','utf-8')
message.attach(textmessage)
#发送邮件操作
smtp.sendmail(sender, receivers, message.as_string())
smtp.quit()
邮箱收到邮件
收到邮件的那一刻,你就开心了~
部署到服务器
最后一步,如果想持续获取,那就找个服务器,部署一下。有兴趣的博主,继续研究~