chromeプラグインによるマイクロブログの言論監視を実現

4386 ワード

必要に応じて、微博の発表を監視し、キーワードが含まれている場合は警察に通報します. 
もちろん、以上のスタッフはブラウザを開いて、微博にログインして、表示することができます.しかし、自動化を実現する必要があります.
方法はたくさんありますが、12306の切符を奪うプラグインのような簡単な方法を試してみました.chromeスクリプトで.に表示されます.
// ==UserScript==
// @name 			crowler For Firefox&Chrome
// @namespace	
// @author			Bryan Yang
// @developer		Bryan Yang
// @contributor		
// @description		just try to change the background of baidu
// @match			http://1.t.qq.com/search/*
// @require			http://lib.sinaapp.com/js/jquery/1.8.3/jquery.min.js
// @icon			
// @run-at			document-idle
// @version 		1.0.0
// @updateURL		C:\Users\yanggaofei\Desktop\js
// @supportURL		
// @homepage		
// @contributionURL	
// @contributionAmount	¥0.01
// ==/UserScript==

//=======START=======

function addJQuery(callback) {
  var script = document.createElement("script");
  script.setAttribute("src", "//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js");
  script.addEventListener('load', function() {
    var sc = document.createElement("script");
    sc.textContent = "(" + callback.toString() + ")();";
    document.body.appendChild(sc);
  }, false);
  document.body.appendChild(script);
}

//
// the guts of this userscript
function main() {

    console.log('requestPermission');
    window.webkitNotifications.requestPermission(); 

    $('div.sch_btn').append("<button onclick='window.webkitNotifications.requestPermission();'>"+
      '    '+"</button>");

    window.setInterval(function (){
    var text = [];
    var talklist = document.getElementById('talkList');
    console.log('main');
    var li = $(talklist).find('li')[0];
    var auther = $(li).find('div.userPic a');
    var title = auther.attr('title');
    text.push(title);
    var content = $($(li).find('div.msgCnt')[0]).text();
    text.push(content);
    var pub = $($(li).find('div.pubInfo')[0]);
    var left = pub.find('span.left a');
    var time = $(left[0]).attr('title');
    text.push(time);
    var au = $(left[1]).attr('title');
    text.push(au);
    if(window.webkitNotifications.checkPermission()==0){
          console.log('createNotification...')
          //createNotification('      ',text.join(','));
                var showSec = 10000;  
                var icon = "http://d.lanrentuku.com/down/png/1306/sevenesque/messages.png";  
                var popup = window.webkitNotifications.createNotification(icon, '      ', text.join(','));  
                popup.ondisplay = function(event) {  
                    setTimeout(function() { 
                        event.currentTarget.cancel();  
                    }, showSec);  
                }  
                popup.show();
      }
    //alert(text.join('|'));
    console.log(text.join('|'));
  },10*1000);

//    window.setInterval(function(){
//      location.reload();      
//    },1000*1)

}

  function createNotification(title,body){
                var showSec = 10000;  
                var icon = "http://d.lanrentuku.com/down/png/1306/sevenesque/messages.png";  
                var popup = window.webkitNotifications.createNotification(icon, title, body);  
                popup.tag = tab;
                popup.ondisplay = function(event) {  
                    setTimeout(function() { 
                        event.currentTarget.cancel();  
                    }, showSec);  
                }  
                popup.show();
  }


// load jQuery and execute the main function
addJQuery(main);

最終目標まではまだ完成していませんが、大体の考えはこのようにして、私のパソコンのテストは通知を受け取ることができます.後期には、制御ページをリフレッシュし、jsonpを介して構造化データを自分のサーバにコミットし、データベースに保存できます.キーワードを付けて情報をフィルタリングすることもできます.また、すでに自分のサーバに発言を送信し、サーバがテキストの傾向を分析した後、ブラウザに戻ることもできます.