Write the Code. Change the World.

3月 20

最近在学python爬虫,写了个爬取教务处网站的小程序练手。

源码已经托管在 Github 上。

程序很简单,主要是想练习一下前几天学的东西,公告就在 武汉理工大学教务处 首页,页面源代码也很简单,公告及其网址和日期很容易用正则表达式扣下来。

虽然简单,但还是遇到了一些问题,在这里记录下来。

1. 运行报错如下

然后Google了一下,看到有人说老版本python中MIMEText 写法跟新版本不一样,新版本写法

老版本写法

改了之后还是不行,最后在 stackoverflow 找到了类似的问题,虽然这个程序不叫 email.py ,但是目录下面有一个测试用的 email.py 文件没删掉,导致导入模块出错,所以起文件名还是复杂一点好,不然一不小心就重名了。

2. 发邮件遇到的一些问题

一开始用的是QQ邮箱的SMTP服务器,我在本机测试可以发送成功,但放到VPS上就报错

同样是 Ubuntu 14.04 LTS 系统运行结果却不一样,简直坑,目测是QQ邮箱SMTP服务器的问题(做了限制?),Google也没找到答案,有谁知道请务必告诉我~

在 星光 的帮助下找到了解决办法,我尝试了加上这两句,使用SSL协议端口(之前走的是非SSL协议端口)

这样就发送成功了,至于为什么在本机能用非SSL协议端口而在VPS不行,还是未知,猜测是IP发生变化腾讯限制了登录。

然后换了Gmail的服务器,由于开启了两步验证,所以使用Gmail发邮件之前应该先设置应用专用密码(不设置专用密码直接验证会有提示,但提示内容我找不到了),然后又报错如下

stackoverflow 找到了答案,与QQ邮箱不同,Gmail没有非SSL协议端口,所以要这样做

连接 Gmail SMTP 服务器,验证Gmail账号,发送邮件,断开连接的整个流程是这样的

最后可以放到服务器上,设置cron 4个小时执行一次,就能及时获取到教务处的通知啦。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

活捉 26 条
  1. 中二病

    博主好,我想问一下你的博客怎么修改代码让首页显示的是摘要呢?是修改content.php里面的下面这个代码么?如果是的话改成什么样的呢?<?php if ( is_search() ) : // Only display Excerpts for Search ?> <?php the_excerpt(); ?> <?php else : ?> <?php the_content( __( ‘Continue reading ‘, ‘amativeness’ ) ); ?> <?php wp_link_pages( array( ‘before’ => ” . __( ‘Pages:’, ‘amativeness’ ), ‘after’ => ” ) ); ?> <?php the_excerpt(); ?>

    1. 一只萌萌哒博主

      嗯,看到这个了,本来想爬教务处绩点的,然后发现登录之后是动态页面,网址后缀一直在变,就没弄成功

        1. 一只萌萌哒博主

          刚刚设置了独立密码还是不行,然后尝试加了这两句server.ehlo()server.starttls()使用SSL协议端口就发送成功了,看来坑在这里눈_눈

    1. 一只萌萌哒博主

      谢啦~今年大三,下半年或者明年就要找实习,什么公司呀,到时候可以去投简历试试啊(๑•̀ㅂ•́)و✧ (8