微博Rss郵箱推送
🙋 Weibo subscription and sentiment analysis.
假期在家無聊,想到做一個微博訂閱系統,可以將朋友or女朋友的微博更新動態通過郵件推送給我。
就是這樣,代碼已經寫好了,就差個女朋友了。
最后的效果就是實時檢測某一微博博主新發的微博,然后進行郵件通知。
項目地址 : https://github.com/CasterWx/WeiboRSS
演示
啟動
監控到微博更新,發送郵件
用戶更新動態 | 郵件推送 |
---|---|
![]() |
![]() |
實現
總體來說后台是一個爬蟲,用來定時監控微博用戶動態,所以我們首先要完成的是微博動態爬蟲。
每一個動態用Bean來存儲。
我們利用HttpClient類來實現爬取指定URL下的網頁源碼。
抓取微博內容的原理很簡單,新浪微博的微博秀是不需要登錄就可以訪問的,直接爬取解析頁面就可以拿到微博內容。
http://service.weibo.com/widget/widget_blog.php?uid=`用戶id`
微博用戶主頁是根據id來確定的,所以我們需要通過用戶id來進行爬取。
獲得的信息如下,接下來需要對網頁內容進行解析,這里我使用正則表達式對內容解析匹配。
在對歷史動態處理時,我們將歷史動態存儲入一個HashMap中,每一條微博有一個唯一的URL,所以key使用動態的URL,value值為Bean,也就是動態類。
接下來創建一個線程,實時分析目標動態,判斷是否有新的URL出現在HashMap中。
若存在新的URL,則在添加之后發送郵件給訂閱用戶。
發送郵件使用的是QQ郵箱,需要在QQ郵箱中開啟STMP服務,並獲取其給定的客戶端授權碼。
開啟之后保存給定的授權碼,使用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("xxx@qq.com"));//一個收件人
// 設置郵件標題
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