微博Rss郵箱推送系統

微博Rss郵箱推送

🙋 Weibo subscription and sentiment analysis.

假期在家無聊,想到做一個微博訂閱系統,可以將朋友or女朋友的微博更新動態通過郵件推送給我。

就是這樣,代碼已經寫好了,就差個女朋友了。

最後的效果就是實時檢測某一微博博主新發的微博,然後進行郵件通知。

項目地址 : https://github.com/CasterWx/WeiboRSS

演示

啓動
img1

監控到微博更新,發送郵件
img2
img3

用戶更新動態 郵件推送

實現

my

總體來說後臺是一個爬蟲,用來定時監控微博用戶動態,所以我們首先要完成的是微博動態爬蟲。

每一個動態用Bean來存儲。

my

我們利用HttpClient類來實現爬取指定URL下的網頁源碼。

my

抓取微博內容的原理很簡單,新浪微博的微博秀是不需要登錄就可以訪問的,直接爬取解析頁面就可以拿到微博內容。

http://service.weibo.com/widget/widget_blog.php?uid=`用戶id`

微博用戶主頁是根據id來確定的,所以我們需要通過用戶id來進行爬取。

my

獲得的信息如下,接下來需要對網頁內容進行解析,這裏我使用正則表達式對內容解析匹配。

my

my

在對歷史動態處理時,我們將歷史動態存儲入一個HashMap中,每一條微博有一個唯一的URL,所以key使用動態的URL,value值爲Bean,也就是動態類。

my

接下來創建一個線程,實時分析目標動態,判斷是否有新的URL出現在HashMap中。

my

若存在新的URL,則在添加之後發送郵件給訂閱用戶。

my

發送郵件使用的是QQ郵箱,需要在QQ郵箱中開啓STMP服務,並獲取其給定的客戶端授權碼。

my

開啓之後保存給定的授權碼,使用Java-Mail進行郵件發送。

 public static void Send(String myMailAddress,String mailAddress,String stmpPassword,WebBean webBean) throws AddressException,MessagingException {
        Properties properties = new Properties();
        properties.put("mail.transport.protocol", "smtp");// 連接協議
        properties.put("mail.smtp.host", "smtp.qq.com");// 主機名
        properties.put("mail.smtp.port", 465);// 端口號
        properties.put("mail.smtp.auth", "true");
        properties.put("mail.smtp.ssl.enable", "true");// 設置是否使用ssl安全連接 ---一般都使用
        properties.put("mail.debug", "true");// 設置是否顯示debug信息 true 會在控制檯顯示相關信息
        // 得到回話對象
        Session session = Session.getInstance(properties);
        // 獲取郵件對象
        Message message = new MimeMessage(session);
        // 設置發件人郵箱地址
        message.setFrom(new InternetAddress(myMailAddress));
        // 設置收件人郵箱地址
        message.setRecipients(Message.RecipientType.TO, new InternetAddress[]{new InternetAddress(mailAddress)});
        //message.setRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]"));//一個收件人
        // 設置郵件標題
        message.setSubject(webBean.getTitle());
        // 設置郵件內容
        message.setText("您訂閱的博主更新啦!!!\n...更新內容....");
        // 得到郵差對象
        Transport transport = session.getTransport();
        // 連接自己的郵箱賬戶
        transport.connect(myMailAddress, stmpPassword);// 密碼爲QQ郵箱開通的stmp服務後得到的客戶端授權碼
        // 發送郵件
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
    }

stmpPassword就是我們獲取到的授權碼, myMailAddress是我們自己的郵箱地址,收件人地址可以是多人,也可以是一人。

總體流程就已經概述完了,接下來就可以部署到服務器跑起來啦~

後繼還可以將微博動態進行情緒值分析,之前在Github上發佈過一個情緒分析樣本https://github.com/CasterWx/python-girlfriend-mood

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章