微博Rss郵箱推送系統
微博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("[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
微博Rss郵箱推送系統