天天看點

python QQ空間新說說郵件提醒功能實作

先看一下qq郵件是怎麼發送的!!

我們先做一個qq郵件發送的插件

#coding:utf-8
#導入所需要的工具包
import smtplib
import time
from email.mime.text import MIMEText

# 第三方 SMTP 服務
#定義發送郵件的函數友善外部調用
def send_email(host,user,pass_,rece,text,title):
    mail_host= host#設定伺服器
    mail_user=  user  #使用者名
    mail_pass= pass_  #從QQ郵箱官網打開SMTP功能并擷取SMTP的密碼,注意不是QQ密碼!!



    sender = user  #你的郵箱位址
    receiver = rece# 接收郵件,可設定為你的QQ郵箱或者其他郵箱

    message = MIMEText(text, 'plain', 'utf-8')
    message['Subject'] = title #郵件的主題
    message['From'] = sender #郵件的發送人郵箱位址
    message['To'] =  receiver #收件人郵箱位址


    smtpObj = smtplib.SMTP_SSL(mail_host)      
    smtpObj.login(mail_user,mail_pass)#登入郵箱
    print('ok')
    smtpObj.sendmail(sender, receiver, message.as_string())
    print ("郵件發送成功") #成功發送提示
    print(message.as_string())

host = 'smtp.qq.com'
user = "[email protected]"
pass_= "lwsiiwhocgn*****" #從QQ郵箱官網擷取smtp密碼
rece = '[email protected]'
text = 'python'
title = '豬啊你'
if __name__ == '__main__':
    for i in range(,):
        send_email(host,user,pass_,rece,title+' -- '+str(i),text)
        time.sleep()
           

既然實作了郵件的發送後面的也就簡單了

因為qq空間需要 賬号密碼登入比較麻煩,是以我們可以直接用cookie登入。

下一步就是要擷取cookie,方法如下:登入你的qq空間,推薦使用‘https://h5.qzone.qq.com/mqzone/index’,這是手機版的QQ空間,比較簡單。登陸成功後按下“F12”鍵如下:

python QQ空間新說說郵件提醒功能實作

如圖所示選擇network,點選‘F5’重新整理,然後在name選項欄中找到index檔案并确定,在右邊出現的request headers選項中找到cookie 這就是我們需要的cookie 複制儲存。

接下來就有編寫我們的主程式了!

import sys
import urllib.request
import urllib.parse
import time
import chardet
import re
import youjian
cookie = ''  #此處填入你的cookie
date = {}


req = urllib.request.Request(url)
req.add_header('User-Agent',user_agent)
req.add_header('Cookie',cookie)
req.add_header('Connection','keep-alive')
def get():
    html = urllib.request.urlopen(req).read().decode('utf-8','ignore').encode('gbk',errors='ignore').decode('gbk')



    r1 = r'<div class="feed-bd">(.*?)</div>'

    r2 = r'<span class="username".*?>(.*?)</span>'
    #用正則比對我們需要的好友和消息
    global user
    global neirong
    user = re.findall(r2,html)
    neirong = re.findall(r1,html)


#print(user)
#print(neirong)


#第一次擷取空間内發送說說的好友并儲存,以後每隔一段時間進行一次擷取。如果過去到的和已儲存的資訊不一緻那麼久發送郵件到我們指定的郵箱。

p = ""
for j in range(,):
    if j == :
        print('--------------------------------------')
        print('開始運作')

    get()
    #f = open("texe.txt",'w+')
    #f.write(html)
    #f.close()
    print(user)
    #print(neirong)
    l = len(user)
    #for i in range(0,l):
        #print(user[i])
        #print(neirong[i]+'\n')
    if user!=p and j == :
        p = user

    if user!=p and j!=:
        p = user
        print('--------------------------------------')
        r3 = r'<p class="txt">(.*?)</p>'
        key = re.findall(r3,neirong[])
        key = key[]
        if key == '':
            key = '無内容!'
        title = user[]+'發表了新的說說'
        print(title)
        print(key)
        print('--------------------------------------')
#運用我們所寫的‘郵件’插件中的send_email函數發送郵件       youjian.send_email('smtp.qq.com','[email protected]','lwsiiwhocgnkijji','[email protected]',key,title)

    #print(s)
    #print(p)
    #休息5秒
    time.sleep()
           

程式運作時的界面

python QQ空間新說說郵件提醒功能實作

收到的郵件提醒

python QQ空間新說說郵件提醒功能實作

完畢!

關鍵是cookie别弄錯!!!!!