文章定时自动采集(._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()

  邮箱收到邮件

  收到邮件的那一刻,你就开心了~

  部署到服务器

  最后一步,如果想持续获取,那就找个服务器,部署一下。有兴趣的博主,继续研究~

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线