用python定制網(wǎng)頁(yè)跟蹤神器,有信息更新第一時(shí)間通知你(附視頻演示)

在日常生活當(dāng)中你是否有過這樣的煩惱,需要在網(wǎng)上獲取信息,但是不知道信息何時(shí)會(huì)更新?

  • 公務(wù)員等各類考試公告、考試成績(jī)的公布

  • 行業(yè)最新資訊的發(fā)布,如財(cái)經(jīng)資訊、互聯(lián)網(wǎng)公司新聞

  • 追的電視劇、漫畫最新更新內(nèi)容
    ……

有些網(wǎng)站做的比較人性化,有更新消息會(huì)通過微信、短信、郵件或者電話等方式通知我們,但是大部分還沒有,尤其是通知給你想要的信息。

日常生活中我們都會(huì)和熟人朋友講「有消息了及時(shí)通知我」,那在互聯(lián)網(wǎng)上是不是可以有這樣的工具可以定制一個(gè)類似的跟蹤器呢?

今天就來給大家這樣的做這樣一個(gè)網(wǎng)頁(yè)跟蹤器功能的分享,使用到的依舊是強(qiáng)大的python。

需求具體化

首先把我們需要實(shí)現(xiàn)的功能具體化,比方以我的網(wǎng)站「永恒君的百寶箱」為例。

需求就是:跟蹤網(wǎng)站文章,一旦有文章更新,就通過qq郵件來通知我
(說明一下:用qq郵件有個(gè)好處就是,一旦有新的郵件,微信里面會(huì)及時(shí)通知。當(dāng)然也可以用另外一個(gè)微信號(hào)通知,有機(jī)會(huì)再寫一個(gè)微信通知的。)

解決思路

簡(jiǎn)單的描述一下解決思路:
1、獲取網(wǎng)站頁(yè)面的源代碼,提取第一篇文章的標(biāo)題,存儲(chǔ)到電腦中;
2、通過程序設(shè)定每個(gè)固定的時(shí)間(比如1個(gè)小時(shí)),提取網(wǎng)站第一篇文章標(biāo)題,如果和之前存儲(chǔ)的標(biāo)題不一致,則說明有更新。
3、向qq郵箱發(fā)送郵件,告知網(wǎng)站有更新可以去查看。同時(shí)將最新的文章保存到電腦,以便下一次比對(duì)。

設(shè)計(jì)網(wǎng)頁(yè)跟蹤程序

有了上面的思路就好辦了,永恒君花了大概3個(gè)小時(shí)的時(shí)間調(diào)試好了下面的代碼,分了主程序和發(fā)郵件程序兩塊。

主程序

import?requests
from?lxml?import?etree
import?time
import?os
from?sendemail?import?email

while?True:
????url?=?"http://www.yhjbox.com/"???#目標(biāo)跟蹤網(wǎng)頁(yè)
????content?=?requests.get(url).content?
????html?=?etree.HTML(content)
????title?=?html.xpath("/html/body/section/div[2]/div/article[1]/header/h2/a/@title")[0]
????#獲取第一篇文章標(biāo)題????
????print("當(dāng)前的標(biāo)題為:%s"%title)
????#屏幕打印獲取的第一篇文章標(biāo)題

????if?not?os.path.isfile("E:\\title_temp.txt"):
????#判斷title_temp.txt文件是否存在,不存在則創(chuàng)建,并寫入獲取的第一篇文章標(biāo)題
????????f?=?open("E:\\title_temp.txt",?"w")
????????f.write(title)
????????print("將當(dāng)前標(biāo)題記錄在E:\title_temp.txt中,等待檢測(cè)")??
????????f.close()
????else:
????#title_temp.txt文件存在的話,提取里面標(biāo)題,和獲取的標(biāo)題對(duì)比
????????with?open("E:\\title_temp.txt",?"r+")?as?f:
????????????old_title?=?f.read()
????????????if?old_title?!=title:
????????????#如果讀取內(nèi)容和獲取的網(wǎng)站第一篇文章標(biāo)題不一致,則表明網(wǎng)站更新
????????????????email()#發(fā)送qq郵件
????????????????f.seek(0)
????????????????f.truncate()?????????????????????????????
????????????????print("網(wǎng)站有更新,需通知")
????????????????f.write(title)
????????????????#寫入最新的標(biāo)題內(nèi)容,方便下一次比對(duì)
????????????????break
????????????????#退出循環(huán)????????????????
????????????else:
????????????#否則的話,表明網(wǎng)站沒有更新????????????????
????????????????print("網(wǎng)站暫時(shí)沒有更新\n")
????time.sleep(5)
????#檢測(cè)網(wǎng)頁(yè)內(nèi)容時(shí)間間隔,單位為秒(s)

發(fā)郵件程序

import?smtplib
from?email.mime.text?import?MIMEText
from?email.header?import?Header

def?email():

????sender?=?'XXXX@163.com'#填寫發(fā)件人
????pwd?=?'XXXX'#登錄密碼
????receivers?=?['XXXX@qq.com']#填寫收件人?????

????message?=?MIMEText("你好,網(wǎng)站有內(nèi)容更新,請(qǐng)及時(shí)查看","plain",'utf-8')
????#?三個(gè)參數(shù):第一個(gè)為文本內(nèi)容,第二個(gè)為plain設(shè)置文本格式,第三個(gè)為utf-8設(shè)置編碼
????message?['From']?=?"XXX?<XXX@163.com>"
????message?['To']?=?"XXX?<XXX@qq.com>"

????subject?=?"網(wǎng)站有內(nèi)容更新"
????#郵件主題
????message["Subject"]?=?subject

????try:
????????#?使用非本地服務(wù)器,需要建立ssl連接
????????smtpObj?=?smtplib.SMTP_SSL("smtp.163.com",465)
????????#發(fā)件箱郵件服務(wù)器
????????smtpObj.login(sender,pwd)
????????smtpObj.sendmail(sender,receivers,message.as_string())
????????print("郵件發(fā)送成功")
????except?smtplib.SMTPException?as?e:
????????print("Error:無法發(fā)送郵件.Case:%s"%e)

使用方法:

兩個(gè)程序保存在同一個(gè)文件夾,其中發(fā)郵件程序必須保存為「sendemail.py」,主程序隨意。然后運(yùn)行主程序即可。

運(yùn)行結(jié)果

程序使用演示:


演示如何第一時(shí)間知道網(wǎng)頁(yè)信息更新_騰訊視頻


永恒君把上面的代碼打包了一下,需要的伙伴后臺(tái)wx公號(hào)回復(fù)「網(wǎng)頁(yè)跟蹤」即可。

程序可定制的地方

這個(gè)程序目前還沒法做成通用的版本,因?yàn)楦鶕?jù)不同網(wǎng)站、不同郵箱要做更改的地方有:

1、url,即需要跟蹤的網(wǎng)頁(yè)地址

2、title,即獲取第一篇文章標(biāo)題的xpath地址

3、time.sleep(),即間隔多長(zhǎng)時(shí)間提取一次網(wǎng)站信息

4、收發(fā)件郵箱地址

把上面這些改成你自己需要的內(nèi)容即可定制私人的網(wǎng)頁(yè)跟蹤器。關(guān)于代碼的具體的修改內(nèi)容,打算有空的話再開一篇文章具體說說。

1、分享|教你制作一個(gè)微信機(jī)器人陪你聊天,只要幾行代碼

2、帶你看看不一樣的微信!

3、分享 | 微信一鍵統(tǒng)計(jì)、自動(dòng)通過申請(qǐng)、自動(dòng)回復(fù)(操作演示)

4、你還在為無法下載網(wǎng)站視頻煩惱?試試You-Get,統(tǒng)統(tǒng)幫你搞定

5、有了這四款裝備,告別繁瑣和重復(fù)的工作!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,214評(píng)論 25 708
  • 用兩張圖告訴你,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 14,048評(píng)論 2 59
  • 1、通過CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明AI閱讀 16,213評(píng)論 3 119
  • 姓名 性別 學(xué)號(hào) 雷雨林 男 201610012464 胡家康 男 201610012467 楊森 男 20...
    喵小厸閱讀 567評(píng)論 0 0
  • 對(duì)于我們來說,趕上了一個(gè)最好的時(shí)代。一個(gè)嶄新的時(shí)代即將到來! 以互聯(lián)網(wǎng)+為工具,以大眾創(chuàng)業(yè)為形式,正在塑造嶄新的經(jīng)...
    蘭_6c9a閱讀 202評(píng)論 0 0

友情鏈接更多精彩內(nèi)容