1. 程式人生 > >介面應用小玩具-部落格園積分排名變動監控工具

介面應用小玩具-部落格園積分排名變動監控工具

# coding=utf-8
"""獲取部落格的排名並自動郵件通知
"""
from bs4 import BeautifulSoup
from time import sleep
import requests
import logging
import thread

from dtlib.notice import MailMsg
from dtlib.dtlog import dlog

__author__ = 'Harmo'


def get_nums(blogs_des):
    """
    get page ranks from string
    :param blogs_des:
    :return:
    """
    split_str = blogs_des.split('-')[1].strip()
    return split_str


class BlogRankMonitor(object):
    """
    部落格園積分排名監控工具
    """
    def __init__(self, id):
        self.gap_seconds = 60 * 30  # 間隔時間為30min
        self.url_fmt = 'http://www.cnblogs.com/%s/mvc/blog/sidecolumn.aspx?blogApp=%s'
        self.id = id
        self.score = 0
        self.rank = 0
        self.his_score = 0
        self.his_rank = 0

    def get_blog_ranks(self):
        """
        解析頁面獲取部落格積分和排名
        :return:
        """
        url = self.url_fmt % (self.id, self.id)
        res = requests.get(url)
        soup = BeautifulSoup(res.text)
        lis = soup.findAll('div')

        for item in lis:
            if 'sidebar_scorerank' == item.get('id'):
                li_lists = item.findAll('li')

                for li_item in li_lists:
                    if u'積分' in li_item.text:
                        self.score = get_nums(li_item.text)
                    elif u'排名' in li_item.text:
                        self.rank = get_nums(li_item.text)
                    else:
                        print 'Error'
            continue

    def monitor_score_rank(self):
        """
        監控部落格積分及排名的變化
        :return:
        """
        while True:
            self.get_blog_ranks()
            if self.score != self.his_score or self.rank != self.his_rank:
                # region 傳送郵件
                mail_title = '[e-notice]:blog-rank-changes'
                mail_body = "[%s]time-(score,rank):old-(%s,%s),now-(%s,%s)" \
                            % (
                                self.id,
                                self.his_score, self.his_rank,
                                self.score, self.rank
                            )
                mail_obj = MailMsg()
                mail_obj.set_title(mail_title)
                mail_obj.set_body(mail_body)
                mail_obj.send()
                dlog.debug('send mail message:%s' % self.id)
                # endregion
                self.his_score = self.score
                self.his_rank = self.rank

            sleep(self.gap_seconds)

    def start_score_rank_thread(self):
        """
        開啟監控的執行緒
        :return:
        """
        thread.start_new_thread(self.monitor_score_rank, ())


if __name__ == '__main__':
    logging.getLogger("urllib3.connectionpool").setLevel(logging.WARNING)

    id_list = [
        'zhangfei',
        'beer'
    ]

    for id in id_list:
        blog = BlogRankMonitor(id)
        blog.start_score_rank_thread()

    #讓主執行緒一直執行
    while 1:
        sleep(3600)

相關推薦

介面應用玩具-部落積分排名變動監控工具

# coding=utf-8 """獲取部落格的排名並自動郵件通知 """ from bs4 import BeautifulSoup from time import sleep import requests import logging import thread from dt

UWP 獲取部落積分,並以圖表形式呈現變化趨勢

先看一下效果吧     1. 分析 說實話,之前還真沒在乎過部落格園的排名和積分,部落格園預設也不給顯示。需要自己到選項裡面勾選才可以。    之前也有幾個大佬寫過類似的文章,不過是很早了。部落格園關於獲取積分的api已經變了。 也不算是api吧,

檢視部落積分排名趨勢圖的工具

問題的提出 在部落格園寫文章有一段時間了,除了自己有一些新的發現想與別人分享外,推動我寫文章的最大動力就是看部落格園排名不斷增長啦!然而在部落格園後臺,只能看到當天的積分與排名,歷史值和趨勢卻沒有辦法查詢,對於文章發表後對自己積分與排名的影響並不直觀,於是就想到自己動手做一個積分與排名趨勢圖這樣一個工具。 具

一位牛人的多執行緒和非同步呼叫文章 ~轉自部落的“顧問”

首先申明:這篇文章不是我寫的,我看到的一位牛人的,自己慢慢的消化了……摘要:本章討論與智慧客戶端應用程式中多執行緒的使用有關的問題。為了最大限度地提高智慧客戶端應用程式的響應能力,需要仔細考慮如何和何時使用多執行緒。執行緒可以大大提高應用程式的可用性和效能,但是當您確定它們將如何與使用者介面互動時,需要對其進

ngModel 值不更新 介面不展示(轉自部落雪狼部落

ngular中的$scope是頁面(view)和資料(model)之間的橋樑,它連結了頁面元素和model,也是angular雙向繫結機制的核心。 而ngModel是angular用來處理表單(form)的最重要的指令,它連結了頁面表單中的可互動元素和位於$scope之

iOS 對應用程式啟動時所有方法的呼叫順序分析(轉自董鉑然部落)

一個應用程式的啟動過程要包括代理的建立,控制器的載入和控制器view的載入,這其中有很多關於生命週期的方法,每個方法都是有先後順序的,如果呼叫順序拿不準,或者某段程式碼寫的方法不恰當,就會遇到各種奇葩問題。本文不怕麻煩的在幾乎所有啟動時要呼叫的方法裡都用了 __FUNCT

完成埠(Completion Port)詳解 轉載來自部落----- By PiggyXP(豬)

   完成埠(Completion Port)詳解                                                              ----- By PiggyXP(小豬) 前 言      

部落編,請給我一個說法 20210315

部落格園小編,請問你們是幾個意思,這是第幾次了,你們自己數一數。給你們發郵件,你們有回覆嗎?? 你列舉的首頁是分享知識的地方,要求: 1,原創精品 2,排版整齊 3,足夠的篇幅 4,與程式設計師相關,能夠讓讀者從中學到知識 那我的文章 Azure Cost alerts 費用成本分析 怎麼

Xdebug安裝對應版本與配置 - cxscode - 部落

Xdebug安裝地址https://xdebug.org/download.php,進入下載頁面後點擊custom installation instructions,可以找到適合的Xdebug版本。  如果你點選了custom installation instructions,會進入下面的

phpstorm除錯環境XDebug搭建 - cxscode - 部落

1.安裝XDebug,通過phpinfo()可以看到xdebug是否已安裝!!!如果未安裝,可以先看我的另一篇關於XDebug安裝的文章:http://www.cnblogs.com/cxscode/p/7045827.html 2.phpstorm配置 因為中間遇到一個坑,所以網上大部分配置操作都做

phpstorm+xdebug詳解 - cxscode - 部落

1.run->edit configurations StartUrl最好是網址,不然容易出錯,Server選擇的是配置時新增的Servers,詳可參考:http://www.cnblogs.com/cxscode/p/7045944.html 2. Chrome谷歌瀏覽器的擴充套件我安裝了兩個

windows下nginx配置報錯GetFileAttributesEx - JohnnyWei - 部落

因為電腦螢幕出現亮點,拿去換屏了,所以使用了windows環境,安裝了下wlmp環境 在配置Nginx的時候,發現配置沒有問題,但是老是訪問不了。 2015/08/24 15:03:59 [crit] 4560#3796: *222 GetFileAttributesEx() "d:\wwwroot

git分支與版本管理、版本回退、衝突解決記錄 - 海北天藍 - 部落

一.基礎使用 1.初始化本地倉庫 git init 2.關聯遠端倉庫 git remote add origin [email protected]:使用者名稱/倉庫名.git 3.新增遠端倉庫檔案到本地 git pull origin master   本地自動建

2018年11月1日開通部落感想!

為什麼開通部落格園?對啊?我也想問自己這個問題。我想,還是為了自己心中那份不安分吧。至於自己心中的那小目標,我一直在奮鬥著。。。。。,我感覺在向我招手,我在一直在努力著。歸結一點就是使自己to Strong,better Strong。 學習是一個持續的過程,由於學習知識的混亂,我認為有必要將自己的學習的知

部落新增github角標的方法

作為程式設計師,總該有個 github 賬戶吧。可以使用 GitHub Corners 將部落格和 Github 賬戶關聯起來。 效果圖:見左上角 使用方式: 進入 GitHub Corners ,選擇自己鐘意的 Github 角樣式,拷貝對應的程式碼。記得將超連結 a 的 href 屬性替換為你的 git

今天,我開通了部落

部落格開通時間:   2018-11-02-19:43:15   開通部落格目的:   記錄學習程序,分享開發過程!   部落格內容:   1、學習C++,為了更深刻的理解計算機工作原理;   2、學習Python;   3、用Python開發houdini外掛;   

尋找複雜背景下的物體輪廓 (從禾路的部落整理學習)

目錄 1.問題背景 2.解決思路 3.程式碼實現 4.相關資料 1.問題背景 由於拍攝時產生的陰影原因,所計算出來的物體輪廓並不完整。那麼有沒有方法檢測出物體的完整輪廓呢?             &n

部落搬家系列(三)-爬取部落部落

部落格搬家系列(三)-爬取部落格園部落格 一.前情回顧  部落格搬家系列(一)-簡介:https://blog.csdn.net/rico_zhou/article/details/83619152  部落格搬家系列(二)-爬取CSDN部落格:https://bl

MySQL優化---儲存過程和儲存函式-1-轉自部落

轉自網際網路.mysql優化   當一個大型系統在建立時,會發現,很多的SQL操作是有重疊的,個別計算是相同的,比如:業務系統中,計算一張工單的計算方式。當遇到這些情況時,我們運用儲存過程就是一個非常棒的優化啦。那麼,什麼是儲存 過程和儲存函式呢? 一、MYSQL儲存過程簡介(技術

加入部落的第一篇文章

這裡是一個大一軟體專業的....萌新? 近些時候大佬AK說:我開了個公眾號,我們寫個docker教程吧..... 但是呢我剛開學沒多久事情亂七八糟的有一堆 只能晚上看看他寫好的文章提提意見然後再上傳 唯一做過的貢獻可能就是docker教程系列的封面是我做的吧 其他的事情都是大佬去做的(逃) 原先是