[新手开源] 爬取韩寒“一个”文章且自动邮件发送功能

源码地址:https://github.com/xcc3641/pySendOneToEmailhtml

准备

  • 一台云服务器python

  • 写好的Python脚本linux

效果

由于如今“一个”的Android客户端启动愈来愈慢,并且不少本身不感兴趣的东西(我只是想看看文章),因此就写了这个小爬虫。它能够在“一个”更新后把我要的内容发到个人邮箱里。git

放在云服务器里,因此不用担忧电费啊其余问题~github

实践

云服务器

本身配置的是阿里云的服务器,学生特惠9.9,Ubuntu系统。这个系统自带了Python2.7环境,因此不用本身手动去安装。编程

本地是用的Window10系统,最好安装下SecureCRSecureFXPortable。远程链接本身的服务器,并且命令行和文件操做会简便不少。ubuntu

由于“一个”是天天22点会更新,因此本身的服务器要作一个定时服务,ubuntu下自带了Crontab定时任务。服务器

配置Crontab

  1. 加入须要执行的脚本网络

    crontab -e
    1 22 * * * 路径/python 路径/xxx.py
    保存重启 /etc/init.d/cron restart
  2. Python最好写全路径,这是一个坑工具

  3. 须要在root用户下进行

  4. 具体的Crontab能够参考Crontab

Python代码

这里主要是用到了python自带的邮件服务的库和第三方网络解析库,代码量很少并且也不难,有编程基础的很容易学会。

邮件相关

邮件类库

from email.mime.multipart import MIMEMultipart
   from email.header import Header
   from email.mime.text import MIMEText
   from email.utils import parseaddr, formataddr
   import smtplib

配置邮件&发送邮件的关键代码

msg = MIMEMultipart()

    msg['From'] = _format_addr(u'Xie CC <%s>' % from_addr)
    msg['To'] = _format_addr(u'管理员 <%s>' % to_addr)
    msg['Subject'] = Header(u'The One    ' + title, 'utf-8').encode()

    msg.attach(MIMEText('<html><body><div style="text-align: center;"><p><img src="' + img + '"></p></div>' +
                        '<p style="text-align:center;\"> <br /><br /><strong><span style="font-size:14px;\">' + text +
                        '</span></p><br /><br /><br /><br /><br />' + story + '</body></html>', 'html', 'utf-8'))

    server = smtplib.SMTP(smtp_server, 25)
    server.set_debuglevel(1)
    server.login(from_addr, password)
    server.sendmail(from_addr, [to_addr], msg.as_string())
    server.quit()

这里本身就不详细介绍这个库,具体能够参考这个教程,Python不是很难理解.

爬取信息

类库

import requests
   from bs4 import BeautifulSoup

有一次用urllib,urllib2发现会遇到各类编码问题须要本身去解决,特别烦人。而后转到了requests这个库,彻底没有遇到像url那样恶心的编码问题,并且不少需求均可以知足,因此后面爬静态网页都习惯用这个库了。

之前仍是蛮喜欢用正则的,此次就学习了下bs4的用法,感受仍是挺容易上手的。具体的实现都不难,都是基础的爬虫知识,并且“一个”并无反爬虫的设定,因此蛮适合初学者的。

用工具方便本身,我以为这就是本身编程的意义,这让我很开心。

相关文章
相关标签/搜索