Python2.x爬蟲--軟考報名郵件提醒
阿新 • • 發佈:2019-01-01
最近在學習爬蟲,然後我就琢磨寫一點既能對我有幫助又能用到學到的知識的程式,然後腦洞大開,就想到寫一個用於軟考報名郵件提醒的小程式(QAQ上半年木有過)
思路:
首先檢視一下軟考報名網站的頁面:
傳送門:軟考報名
因為我在河南地區,現在還沒有開始報名,所以我希望如果網頁上出現了我所在地區的報名時間可以把報名有效時間通過郵件傳送給我指定的郵箱,這樣我就不用天天檢視這個網頁了
首先開啟控制檯,檢視這個網頁的結構,找到機構名稱和報名有效時間的那個部分,然後查詢一下規律
多看看就會發現我所需要的就是div class="layui-col-md5 col1"和div class="layui-col-md5 col2 timeW"這兩個div塊的內容,通過前者查詢是否有我需要的城市,查到有的話,就把城市對應的時間提取出來
想要用Python傳送郵件的首先需要獲取郵箱的授權碼,我這裡用的是QQ郵箱舉例:
登入QQ郵箱->設定->賬戶
如果這裡還是不太明白的可以百度一下
原始碼:
#ruankao.py 用xpath解析網頁 #!/usr/bin/python #coding:utf-8 import os import sys import time import requests from lxml import etree import aemail reload(sys) sys.setdefaultencoding('utf-8') header={ 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.9', 'Cache-Control': 'max-age=0', 'Connection': 'keep-alive', 'Cookie': 'PHPSESSID=fc6pp410iipjlfe8cti8fdj6u1', 'Host': '112.74.37.81', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36' } def main(): a='' url = 'http://112.74.37.81/rk/enroll/index.php/sign/welcome' res = requests.get(url , headers = header, timeout = 20).text html=etree.HTML(res) b = html.xpath("//*[@class='layui-col-md5 col1' or @class='layui-col-md5 col2 timeW' ]/text()") flag = 0 flag1 = 0 i = 1 for c in b: if c == "天津": #這個可以填寫你想要查詢的那個省,以天津為例子 flag = 1 flag1 = i break i+=1 print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) if flag == 1: aemail.emaill(b[i]) # aemail_yu.emaill(b[i]) print b[flag1-1]+" "+b[flag1] else : print "對不起,報名時間未到" if __name__ == '__main__': main()
#aemail.py 傳送郵件
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import requests
import time
from lxml import etree
import re
import smtplib
from email.mime.text import MIMEText
reload(sys)
sys.setdefaultencoding('utf8')
_user = "[email protected]" #傳送提醒郵件的信箱
_pwd = "xxxxxxxxxxxx" #接收提醒郵件的信箱
_to = " [email protected]" #_user郵箱的授權碼
def emaill(timee):
msg = MIMEText("xx省軟考已經開始報名啦~,報名有效時間是:"+timee+" \n請在以下網站及時報名:http://112.74.37.81/rk/enroll/index.php/sign/welcome ") #傳送郵件的內容
msg["Subject"] = "軟考提醒——該報名啦" #傳送郵件的標題
msg["From"] = _user
msg["To"] = _to
try:
s = smtplib.SMTP_SSL("smtp.qq.com", 465)
s.login(_user, _pwd)
s.sendmail(_user, _to, msg.as_string())
s.quit()
except smtplib.SMTPException,e:
print ("Falied,%s" %e)
建議去掉註釋執行~
祝下半年考軟考的同學們一次通過哦~