亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Java的新浪微博爬蟲研究與實(shí)現(xiàn)

        2017-09-19 07:18:30藍(lán)鼎棟柯文德黎樹俊鄧文天
        關(guān)鍵詞:頁面用戶信息

        陳 珂,藍(lán)鼎棟,柯文德,黎樹俊,鄧文天

        (廣東石油化工學(xué)院 計(jì)算機(jī)與電子信息學(xué)院,廣東 茂名 525000)

        基于Java的新浪微博爬蟲研究與實(shí)現(xiàn)

        陳 珂,藍(lán)鼎棟,柯文德,黎樹俊,鄧文天

        (廣東石油化工學(xué)院 計(jì)算機(jī)與電子信息學(xué)院,廣東 茂名 525000)

        為了高效獲取更多的微博數(shù)據(jù),針對調(diào)用微博API和網(wǎng)頁版(com版)等傳統(tǒng)微博爬蟲在數(shù)據(jù)采集中所存在的問題,設(shè)計(jì)開發(fā)了一個(gè)基于Java的采集新浪微博Weibo.cn站點(diǎn)的網(wǎng)絡(luò)爬蟲系統(tǒng)。該系統(tǒng)通過廣度遍歷結(jié)合組拼URL的方式采集網(wǎng)頁源碼,使網(wǎng)頁源碼更加簡潔,純凈度更高,降低了網(wǎng)絡(luò)傳輸壓力并減少了HTML源碼解析時(shí)間。主要實(shí)現(xiàn)了微博模擬登陸、微博網(wǎng)頁爬取、微博頁面數(shù)據(jù)提取和任務(wù)調(diào)度控制,并對爬取數(shù)據(jù)進(jìn)行了分析,在爬蟲中添加了主題微博篩選功能。為驗(yàn)證該系統(tǒng)的有效性和可行性,與其他傳統(tǒng)方法進(jìn)行了分析對比。實(shí)驗(yàn)驗(yàn)結(jié)果表明,所提出的系統(tǒng)爬取效率更高,實(shí)現(xiàn)代碼更簡便。

        新浪微博;網(wǎng)絡(luò)爬蟲;Java;數(shù)據(jù)挖掘

        0 引 言

        隨著計(jì)算機(jī)與網(wǎng)絡(luò)技術(shù)的快速發(fā)展,社交網(wǎng)絡(luò)平臺是人們喜愛的網(wǎng)絡(luò)社交方式。目前廣為流行的微博系統(tǒng),對人們的生活方式影響巨大。伴隨著微博使用人數(shù)的急劇上升,產(chǎn)生了巨大的數(shù)據(jù)量,由此可以從中挖掘出大量的有用信息,而基于微博的數(shù)據(jù)挖掘研究已成為當(dāng)今社會科學(xué)和計(jì)算機(jī)科學(xué)研究的重點(diǎn)。微博(Weibo)是一種通過關(guān)注機(jī)制分享簡短實(shí)時(shí)信息的廣播式的社交網(wǎng)絡(luò)平臺,也是一個(gè)基于用戶關(guān)系的信息分享、傳播以及獲取的平臺[1]。用戶可以通過WEB、WAP等各種客戶端組建個(gè)人社區(qū),以140字(包括標(biāo)點(diǎn)符號)的文字更新信息,并實(shí)現(xiàn)即時(shí)分享。微博的關(guān)注機(jī)制分為可單向、可雙向兩種。微博作為一種分享和交流平臺,其更注重時(shí)效性和隨意性。

        比較知名的微博系統(tǒng)是2006年推出的Twitter,人們對它進(jìn)行了一系列的研究與數(shù)據(jù)分析,特別是利用數(shù)據(jù)挖掘技術(shù)從中獲取了大量有用信息。2009年新浪微博系統(tǒng)推出,它提供的微博API的使用限制很多,最大的問題是調(diào)用次數(shù)少,測試授權(quán)單個(gè)IP每小時(shí)只能請求1 000次,而且每次調(diào)用時(shí)都是獲取一個(gè)用戶的某個(gè)數(shù)據(jù)集,雖然利于獲取單個(gè)用戶的大量數(shù)據(jù)集,但不利于廣度抓取全網(wǎng)用戶的最新信息。當(dāng)然傳統(tǒng)爬蟲有廣度爬取頁面的能力,但是微博需要用戶進(jìn)行登錄驗(yàn)證才有權(quán)限訪問大量的微博頁面,并且傳統(tǒng)爬蟲獲取新URL的方式一般是通過HTML源碼中提取[2-4]。所構(gòu)建的微博爬蟲是通過用戶ID獲取,可以進(jìn)行URL組拼,數(shù)據(jù)是動態(tài)加載的,要判斷是否存在下一頁。所以,為了更快速獲取大量更有用的微博數(shù)據(jù),必須編寫特定需求的微博網(wǎng)絡(luò)爬蟲系統(tǒng)。目前基于weibo.cn數(shù)據(jù)采集方面的研究較少,針對調(diào)用微博API、傳統(tǒng)爬蟲、網(wǎng)頁版(com版)微博爬蟲存在的問題,設(shè)計(jì)開發(fā)了一個(gè)基于Java新浪微博weibo.cn站點(diǎn)的網(wǎng)絡(luò)爬蟲系統(tǒng)[5-6]。

        1 微博爬蟲設(shè)計(jì)

        1.1微博爬蟲的主要結(jié)構(gòu)與流程

        所用的開源工具包或組件有:org.seleniumhq.selenium-java-2.45.0組件(內(nèi)含htmlunit-2.15.jar,java頁面分析工具包),org.apache.httpcomponents-httpclient-4.3.5(內(nèi)含httpclient-4.3.5.jar,支持HTTP協(xié)議的客戶端編程工具包),org.htmlparser-2.1(內(nèi)含htmlparser-2.1.jar,html解析工具包);輔助工具有瀏覽器Firefox和它的網(wǎng)站調(diào)試工具Firebug。

        微博爬蟲主要功能流程(見圖1)說明如下:

        圖1 微博爬蟲主要功能流程圖

        (1)通過htmlunit模擬登陸weibo.cn站點(diǎn),登陸成功后會獲取到名為gsid_CTandWM的cookie字段;

        (2)把所有返回的cookie字段存入httpclient的http代理(相當(dāng)于一個(gè)瀏覽器);

        (3)從種子URL開始爬取,從微博服務(wù)器中請求URL對應(yīng)的html源碼;

        (4)交給html源碼解釋程序模塊,調(diào)用htmlparser里面的功能函數(shù)和正則表達(dá)式進(jìn)行URL和微博數(shù)據(jù)的提取與入庫。

        在這個(gè)過程中,要維護(hù)一個(gè)待爬隊(duì)列和一個(gè)近期已爬取過的URL的已爬隊(duì)列,新爬取的URL如果都不在這兩個(gè)隊(duì)列中,就把它存進(jìn)待爬隊(duì)列,已爬取過的URL存放進(jìn)已爬隊(duì)列,并且根據(jù)存放時(shí)間決定是否釋放掉[7-8]。

        1.2微博模擬登陸

        現(xiàn)在微博的無限制訪問需要用戶進(jìn)行驗(yàn)證登錄,有兩種新浪微博服務(wù)器可供選擇,一種是爬取weibo.cn服務(wù)器(以下簡稱cn版微博),另一種是爬取weibo.com服務(wù)器(以下簡稱com版微博)。cn版微博的頁面相對com版的頁面更加簡潔,網(wǎng)頁源碼更少,登陸賬號密碼都不加密,而且所需信息全面。電腦版模擬登陸需要對用戶名和用戶密碼進(jìn)行加密傳輸,而且JavaScript和廣告圖代碼很多,會降低HTML源碼分析效率和增加網(wǎng)絡(luò)傳輸壓力[9]。因此,主要采用手機(jī)版模擬登陸方式和抓取手機(jī)版微博頁面。

        1.2.1 com版微博的模擬登陸

        通過Firefox和Firebug分析了微博網(wǎng)頁版登陸方式,其主要登陸步驟為:

        (1)瀏覽器向微博服務(wù)器發(fā)送一個(gè)Get請求,服務(wù)器返回名為servertime數(shù)值和名為nonce的隨機(jī)生成的字符串,每次登陸前隨機(jī)生成傳回給客戶端加密用戶密碼;

        (2)根據(jù)步驟1返回的字段值,使用BASE64算法加密賬號名,用RSA算法對servertime加上nonce再加上用戶密碼這三個(gè)值組成的字符串進(jìn)行加密,得到加密后的用戶密碼,向服務(wù)器發(fā)送包含加密過的用戶名和用戶密碼的Post請求的登陸URL[10];

        (3)微博服務(wù)器收到登陸請求后進(jìn)行登陸驗(yàn)證,如果驗(yàn)證成功就返回一個(gè)重定向的URL給客戶端,瀏覽器解析該URL后,進(jìn)入登陸成功頁面并把該登陸標(biāo)志寫入本地Cookies中。

        1.2.2 cn版微博的模擬登陸

        同樣通過Firefox和Firebug來分析手機(jī)版的登陸方式,步驟為:

        (1)打開手機(jī)版登陸URL:login.weibo.cn,服務(wù)器返回一個(gè)帶有名為“mobile”用于輸入用戶名輸入框和名為“password_4位隨機(jī)數(shù)字”密碼輸入框的頁面;

        (2)向微博服務(wù)器登陸URL發(fā)送一個(gè)包含明文形式的用戶名和密碼的Post請求;

        (3)微博服務(wù)器對收到的登陸請求進(jìn)行驗(yàn)證,登陸成功后向客戶端返回一個(gè)重定向URL,并且cookie中包含gsid_CTandWM字段,瀏覽器解析該跳轉(zhuǎn)URL進(jìn)入登陸成功頁面并把所有cookie字段寫入本地Cookies中[11]。

        以下是通過開發(fā)包httpunit獲取手機(jī)版微博登陸cookie的Java代碼實(shí)現(xiàn):

        import org.openqa.selenium.Cookie;

        import org.openqa.selenium.WebElement;

        import org.openqa.selenium.htmlunit.HtmlUnitDriver;

        (1)HtmlUnitDriver hud=new HtmlUnitDriver(); //打開HtmlUnit瀏覽器

        (2)hud.setJavascriptEnabled(true); //默認(rèn)執(zhí)行JS,如果不執(zhí)行JS,則可能登錄失敗,因?yàn)橛脩裘艽a框需要JS代碼來繪制

        (3)hud.get(“http://login.weibo.cn/login/”);//請求進(jìn)入登陸頁面

        (4)WebElement mobile=hud.findElementByCssSelector("input[name=mobile]");//獲取用戶名輸入框

        (5)mobile.sendKeys(new CharSequence[] {username});//輸入用戶名

        (6)WebElement pwd=hud.findElementByCssSelector("input[name^=password]");//獲取密碼輸入框,名字以“password_”開頭后面拼接4位隨機(jī)數(shù)字

        (7)pwd.sendKeys(new CharSequence[] {password});//輸入密碼

        (8)submit.click(); //點(diǎn)擊按鈕提交輸入

        (9)Set cookieSet=hud.manage().getCookies();return cookieSet; //登陸成功后得到的cookie集合

        1.3爬取手機(jī)版微博網(wǎng)頁

        1.3.1 瀏覽器中注入cookie

        在請求微博網(wǎng)頁方面,在啟動httpclient瀏覽器代理時(shí),把1.2節(jié)通過html獲取到的cookieSet注入進(jìn)去。htmlunit底層也是實(shí)現(xiàn)httpclient的,所以直接通過httpclient請求頁面,方便而高效。

        代碼功能流程是,循環(huán)迭代出cookieSet集合中所有cookie鍵值對,并把它用BasicClientCookie對象包裝后存進(jìn)CookieStore對象中,最后在創(chuàng)建httpclient瀏覽器時(shí)把CookieStore對象添加進(jìn)去。

        import org.openqa.selenium.Cookie;

        import org.apache.http.impl.client.BasicCookieStore;

        Cookie cookie;

        BasicClientCookie bcCookie;

        CookieStore cookieStore=new BasicCookieStore();

        for (Iterator iterator=cookieSet.iterator(); iterator.hasNext(); ){

        cookie=(Cookie) iterator.next();

        bcCookie=new BasicClientCookie(cookie.getName(), cookie.getValue());

        bcCookie.setVersion(0);

        bcCookie.setDomain(".weibo.cn");

        bcCookie.setPath("/");

        cookieStore.addCookie(bcCookie);

        }

        CloseableHttpClient httpClient=HttpClients.custom().setDefaultCookieStore(cookieStore).build();

        1.3.2 獲取微博頁面源代碼

        要想進(jìn)行數(shù)據(jù)提取,必須從微博服務(wù)器中獲取到具體的網(wǎng)頁源代碼。通過httpclient獲取微博HTML源代碼的具體流程是:把要訪問的URL傳給要執(zhí)行的Get請求(因?yàn)閱渭冊L問簡短URL,用Get請求更合適);然后執(zhí)行Get請求,服務(wù)器返回一個(gè)響應(yīng)對象,通過該對象獲取到具體的HTML源碼htmlSource。

        import org.apache.http.client.methods.HttpGet;

        import org.apache.http.HttpEntity;

        import org.apache.http.client.methods.CloseableHttpResponse;

        HttpGet httpGet.setURI(new URI(URL));

        CloseableHttpResponse httpResponse=httpClient.execute(httpGet);

        HttpEntity httpEntity=httpResponse.getEntity();

        String htmlSource=htmlSource=EntityUtils.toString(httpEntity);

        1.4主題關(guān)鍵詞匹配

        通過某一個(gè)主題的關(guān)鍵詞來匹配相關(guān)微博,如果合適的就加入該主題的數(shù)據(jù)庫表中,并返回該條微博包含的關(guān)鍵詞字符串[12]。篩選出與蚊子叮咬傳播疾病有關(guān)的微博,所設(shè)置的關(guān)鍵詞有登革熱、瘧疾、虐原蟲、乙腦、乙型腦炎、絲蟲。

        如果獲取到的跟主題相關(guān)的微博數(shù)量太少,可以通過組拼http://weibo.cn/search/mblog?keyword=‘關(guān)鍵詞’&page=n,來獲取指定關(guān)鍵詞按照發(fā)布時(shí)間排序的微博。

        public string getKeywords(String weiboContent){

        String[] keywords={‘登革熱’,‘瘧疾’,‘虐原蟲’,‘乙腦’,‘乙型腦炎’,‘絲蟲病’};

        String containsKeyword=new String(“”);

        for(int i=0;i

        if(weiboContent.contains(keywords[i]))

        containsKeyword+=keywords[i]+“;”;

        }

        return containsKeyword;

        }

        1.5任務(wù)調(diào)度控制

        1.5.1 URL隊(duì)列

        在存放URL的隊(duì)列中,必須要維護(hù)待爬隊(duì)列和已爬隊(duì)列。待爬隊(duì)列是存放尚未爬取過的新URL。已爬隊(duì)列存放已經(jīng)爬取過的URL。已爬隊(duì)列的作用主要是去重處理,當(dāng)有新URL準(zhǔn)備添加進(jìn)待爬隊(duì)列前,判斷該URL是否存在于在其中一個(gè),如果已存在,則把該新URL不加進(jìn)待爬隊(duì)列。初始化待爬隊(duì)列,添加微博名人堂URL作為種子URL開始爬取[13]。

        (1)待爬隊(duì)列。

        采用Berkeley Database(BDB)構(gòu)建待爬隊(duì)列,因?yàn)閺脑创a中提取的待爬URL數(shù)量太大,而且數(shù)據(jù)又簡單,使用URL的MD5的值的十六進(jìn)制字符串作為BDB的key,而value則使用待爬URL(CrawlURL.java)的對象。

        URL對象字段至少應(yīng)包括:

        private String oriURL; //原始URL的值,主機(jī)部分是域名

        private int layer; //爬取的層次,從種子開始,依次為第0層,第1層…

        待爬隊(duì)列中提供的使用接口:

        public CrawlURL getNext();//獲取下一條鏈接并把它從隊(duì)列中移除

        public boolean putURL(CrawlURL url);//往隊(duì)列中添加一條URL

        (2)已爬隊(duì)列。

        在企業(yè)級搜索引擎中,常用一個(gè)稱為Bloom Filter(BF)的算法實(shí)現(xiàn)對已抓取過的URL進(jìn)行去重處理。

        BF會根據(jù)大概要存儲的數(shù)據(jù)量,建立一個(gè)java.util.BitSet對象(一個(gè)很長的二進(jìn)制常量),并將所有位設(shè)置為0。對每個(gè)URL,用k個(gè)不同的隨機(jī)數(shù)產(chǎn)生器(F1,F2,…,Fk)產(chǎn)生k個(gè)信息指紋(f1,f2,…,fk)。再用一個(gè)隨機(jī)數(shù)產(chǎn)生器G(把信息指紋變成一個(gè)0到BitSet大小的隨機(jī)數(shù))把這k個(gè)信息指紋映射到BitSet對象中對應(yīng)的k個(gè)自然數(shù)g1,g2,…,gk?,F(xiàn)在把這k個(gè)位置的二進(jìn)制位全部置為1。

        1.5.2 爬取過程控制

        (1)爬取頻率控制。

        新浪微博除了對微博API的調(diào)用次數(shù)進(jìn)行了限制,同樣對用戶正常訪問也進(jìn)行了訪問限制。實(shí)際操作中,如果微博爬蟲訪問過于頻繁,微博賬號或者網(wǎng)絡(luò)IP會被進(jìn)行封停操作,降低抓取頻率,時(shí)間設(shè)置長一些,訪問時(shí)間采用隨機(jī)數(shù),所以要控制好單個(gè)IP的訪問頻率。

        (2)URL權(quán)重控制。

        因?yàn)槲⒉︰RL是動態(tài)更新的,對已經(jīng)爬取過的URL,一段時(shí)間后,頁面的數(shù)據(jù)會發(fā)生變化,所以已爬取過的URL不能一直存放于已爬隊(duì)列中,而且已爬隊(duì)列是采用內(nèi)存結(jié)構(gòu)存儲的布隆過濾器,如果不定期清理部分URL,內(nèi)存會產(chǎn)生溢出。根據(jù)計(jì)算機(jī)內(nèi)存的大小控制好已爬隊(duì)列URL的數(shù)量,一旦數(shù)量過多,應(yīng)該清理等待釋放時(shí)間最短的那部分URL。根據(jù)URL類型,判斷重要性,比如:粉絲量大、新聞?lì)愇⒉⒚餍堑冗@些用戶較為重要,對每個(gè)URL設(shè)置一個(gè)權(quán)值,權(quán)值越大,設(shè)置在已爬隊(duì)列中的存放時(shí)間越短,并把它添加進(jìn)一個(gè)特殊的URL隊(duì)列中。因?yàn)檫@些URL中的微博是更多人閱讀和關(guān)注的,成為熱門微博的可能性更大,所以定期對其進(jìn)行訪問,不錯(cuò)失第一時(shí)間抓取這類微博的機(jī)會。爬取用戶前多少頁微博或者判斷發(fā)布時(shí)間,如果發(fā)布時(shí)間過于久遠(yuǎn),就停止爬取該用戶的微博。同時(shí)爬取被關(guān)注的用戶,用戶的粉絲,也指定爬取前多少頁。

        2 cn版微博數(shù)據(jù)提取

        數(shù)據(jù)提取是從html源碼中提取需要數(shù)據(jù)的環(huán)節(jié)。通過Firebug查看微博html源碼,可以發(fā)現(xiàn)html源碼中的結(jié)構(gòu)和編寫規(guī)則的特點(diǎn),利用這些特點(diǎn)進(jìn)行數(shù)據(jù)提取與篩選。主要功能有:微博用戶資料信息的提取、微博信息的提取、新URL的獲取、關(guān)系用戶的獲取。

        把1.3.2節(jié)獲取到的html源碼htmlSource傳入htmlparser,利用過濾節(jié)點(diǎn)和獲取節(jié)點(diǎn)文本的功能,結(jié)合正則表達(dá)式的字符串匹配功能,實(shí)現(xiàn)數(shù)據(jù)的提取操作。

        import org.htmlparser.*;

        Parser parser=new Parser(htmlSource);

        NodeFilter titleFilter=new NodeClassFilter(TitleTag.class);

        NodeFilter divFilter=new NodeClassFilter(Div.class);

        NodeFilter[] filters={titleFilter,divFilter};

        NodeFilter orFilter=new OrFilter(filters);

        NodeList nodeList=parser.extractAllNodesThatMatch(orFilter);

        2.1微博用戶資料的信息提取

        微博用戶的資料信息,比如:已發(fā)布微博數(shù)量、關(guān)注他人數(shù)量、粉絲數(shù)量,都出現(xiàn)在第一個(gè)

        節(jié)點(diǎn)的文本中,用戶的ID(uid)出現(xiàn)在該div節(jié)點(diǎn)下的節(jié)點(diǎn)的文本中,微博ID(mid)存在于該節(jié)點(diǎn)的屬性值中;微博圖地址存在于該節(jié)點(diǎn)里面的圖片中,可用正則表達(dá)式:matches(".*\s+src="http://.+\s+alt="圖片"\s+.*class="ib".*")進(jìn)行匹配獲取。

        觀察微博發(fā)布日期的形式有:多少分鐘前、今天 時(shí):分、幾月幾日 時(shí):分、年-月-日 時(shí):分:秒,把所有發(fā)布日期統(tǒng)一轉(zhuǎn)換成“年-月-日 時(shí):分:秒”這種java.sql.Timestamp格式進(jìn)行存儲。

        2.3新用戶獲取與URL組拼

        提取并過濾出有用的URL,網(wǎng)頁源碼中的URL存在于標(biāo)簽中的src屬性中,利用htmlparser進(jìn)行URL提取。但是獲取結(jié)果中存在大量的無價(jià)值URL,如果不進(jìn)行過濾篩選,會大大降低爬蟲的抓取效率。需要過濾掉的URL類型有:非weibo.cn內(nèi)網(wǎng)、點(diǎn)贊、舉報(bào)、加關(guān)注、@他(她)的、相冊、查看原圖、贊、收藏、舉報(bào)、回復(fù),微博頁面底端定制模塊的皮膚、圖片、條數(shù)、隱私、私信、特別關(guān)注、資料,微博分類選項(xiàng)的原創(chuàng)-圖片-分組-篩選、查看原圖等等,這些URL鏈接都是有特點(diǎn)的格式,很容易過濾掉。因?yàn)樾吕宋⒉┑捻撁婢哂幸欢ǖ母袷剑抑慌廊⌒吕宋⒉┱军c(diǎn)的信息,所以可通過URL組拼的方式更有效地獲取大量信息[14]。

        通過對關(guān)注用戶和粉絲用戶的獲取,可以把所有用戶組建成若干個(gè)網(wǎng)絡(luò)關(guān)系社團(tuán)。想要獲取某個(gè)用戶關(guān)注的人,可以組拼URL為:http://weibo.cn/uid/follow?page=n,想要獲取粉絲,可組拼URL為:http://weibo.cn/uid/fans?page=n。其中uid是該用戶的id,n是結(jié)果列表的頁號。然后可以從這些結(jié)果頁面中提取出大量的用戶ID和昵稱。

        3 實(shí)驗(yàn)及結(jié)果分析

        3.1采集性能比較與分析

        當(dāng)網(wǎng)絡(luò)足夠好時(shí),將cn版微博爬蟲與文獻(xiàn)[10]中的新浪微博API、傳統(tǒng)爬蟲、網(wǎng)頁版微博爬蟲的爬取效率進(jìn)行比較,如圖2所示。

        圖2 不同方案采集用戶信息和采集微博的速率比較

        可以看到,cn版微博爬蟲在效率上高于其他類型的微博采集方式[15]。

        3.2蚊子叮咬傳播疾病的數(shù)據(jù)分析

        根據(jù)匹配關(guān)鍵詞登革熱、瘧疾、虐原蟲、乙腦、乙型腦炎、絲蟲提取出的相關(guān)微博,然后根據(jù)發(fā)布時(shí)間篩選出屬于2011年1月到2015年11月的微博總數(shù)共850 794條,具體分布如表1所示。

        表1 文字叮咬疾病相關(guān)微博分布比例

        經(jīng)過統(tǒng)計(jì),包含關(guān)鍵詞登革熱的微博有395 976條,包含瘧疾或瘧原蟲的有292 843條,占比例46.781%;包含乙腦或乙型腦炎的有141 691條,絲蟲病的微博有20 274條,可知跟蚊子有關(guān)的微博主要是登革熱和瘧疾。

        將所有微博按照時(shí)間段從2011年1月到2015年11月,然后按微博發(fā)布的月份進(jìn)行分類統(tǒng)計(jì),可以得到每個(gè)月相關(guān)微博數(shù)量和相關(guān)參與用戶的數(shù)量,如圖3和圖4所示。

        圖3 與蚊子叮咬傳播疾病微博

        圖4 相關(guān)微博的用戶參與數(shù)量

        圖4統(tǒng)計(jì)出了每個(gè)月份發(fā)布微博對應(yīng)用戶的數(shù)量,該用戶數(shù)量是經(jīng)過重復(fù)性去除后產(chǎn)生的,即找到該月每條微博對應(yīng)的發(fā)布者后,判斷該用戶是否被統(tǒng)計(jì)過,如果已經(jīng)被統(tǒng)計(jì)過,則不再統(tǒng)計(jì)。例如,在某個(gè)月的多條微博屬于同一個(gè)用戶發(fā)布,但是該用戶只統(tǒng)計(jì)一次。

        從圖3和圖4可以看出,2014年6-8月與2015年5、9、10月分別出現(xiàn)了一個(gè)最大的和較大的波峰,表明這一期間用戶對蚊子叮咬產(chǎn)生的相關(guān)疾病較為關(guān)注。而現(xiàn)實(shí)中的情況是,2014年6月,印度東北部和廣州同時(shí)爆發(fā)嚴(yán)重的感染登革熱病例的疫情;2015年5月,臺灣和其他國家一些地區(qū)爆發(fā)較為嚴(yán)重的登革熱疫情;同年9月印度爆發(fā)5年來最嚴(yán)重的登革熱疫情;同年10月中國科學(xué)家屠呦呦獲得諾貝爾醫(yī)學(xué)獎,她發(fā)現(xiàn)的青蒿素能有效治療瘧疾,同樣引起了很多用戶關(guān)注。相關(guān)微博發(fā)布大波峰基本都是爆發(fā)登革熱疫情,從而引起用戶的參與關(guān)注,隨著時(shí)間的推移,用戶對其的關(guān)注度逐漸降低,發(fā)布的相關(guān)微博越來越少。

        4 結(jié)束語

        從數(shù)據(jù)量龐大的微博數(shù)據(jù)中采集想要的數(shù)據(jù),擁有一個(gè)效率高、可靈活控制采集方向和主題導(dǎo)向的微博爬蟲至關(guān)重要。為此,采用Java結(jié)合流行的HTML源碼解析工具開發(fā)包實(shí)現(xiàn)了一個(gè)可以靈活控制爬取條件的微博網(wǎng)絡(luò)爬蟲,其采用基于手機(jī)版模擬登陸與頁面解析的方法,實(shí)現(xiàn)起來更加便捷。而Java實(shí)現(xiàn)爬蟲的代碼,對相關(guān)開發(fā)人員來說有更大的實(shí)用價(jià)值,節(jié)省了大量爬蟲代碼設(shè)計(jì)時(shí)間。利用該爬蟲系統(tǒng),能更高效地對大規(guī)模微博數(shù)據(jù),特別是最新數(shù)據(jù),進(jìn)行采集,用戶也可以結(jié)合微博API來進(jìn)行數(shù)據(jù)采集,擴(kuò)大微博數(shù)據(jù)的采集量,從而為微博信息的數(shù)據(jù)挖掘提供更全面、準(zhǔn)確的數(shù)據(jù)支持。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)有效可行,采集效率明顯優(yōu)于其他幾種采集方式,且相對于微博API更靈活多變,在廣度遍歷URL方面更出色。

        [1] Wen E,Sun V.新浪微博研究報(bào)告[R/OL].2011-05-20.http://www.techWeb.com.cn/data /2011-02-25/916941.shtml.

        [2] 高 凱,王九碩,馬紅霞,等.微博信息采集及群體行為分析[J].小型微型計(jì)算機(jī)系統(tǒng),2013,34(10):2413-2416.

        [3] 紀(jì) 偉.微博數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].石家莊:河北科技大學(xué),2013.

        [4] Han Ruixia.The influence of microblogging on personal public participation[C]//Proceedings of the 2010 IEEE 2nd symposium on web society.Beijing,China:IEEE,2010:615-618.

        [5] 周德懋,李舟軍.高性能網(wǎng)絡(luò)爬蟲:研究綜述[J].計(jì)算機(jī)科學(xué),2009,36(8):26-29.

        [6] 廉 捷,周 欣,曹 偉,等.新浪微博數(shù)據(jù)挖掘方案[J].清華大學(xué)學(xué)報(bào):自然科學(xué)版,2011,51(10):1300-1305.

        [7] Du Y,Zhang K,Lyu X,et al.The study of gathering and extracting users information based on micro-blog[C]//International conference on computer,mechatronics,control and electronic engineering.[s.l.]:[s.n.],2010:47-50.

        [8] 李超鋒,盧炎生.基于URL結(jié)構(gòu)和訪問時(shí)間的Web頁面訪問相似性度量[J].計(jì)算機(jī)科學(xué),2007,34(4):207-209.

        [9] 尹 江,尹治本,黃 洪.網(wǎng)絡(luò)爬蟲效率瓶頸的分析與解決方案[J].計(jì)算機(jī)應(yīng)用,2008,28(5):1114-1116.

        [10] 孫青云,王俊峰,趙宗渠,等.一種基于模擬登錄的微博數(shù)據(jù)采集方案[J].計(jì)算機(jī)技術(shù)與發(fā)展,2014,24(3):6-10.

        [11] Lu G,Liu S,Lü K.MBCrawler:a software architecture for micro-blog crawler[C]//Proceedings of the 2012 international conference on information technology and software engineering.Berlin:Springer,2013:119-127.

        [12] 劉金紅,陸余良.主題網(wǎng)絡(luò)爬蟲研究綜述[J].計(jì)算機(jī)應(yīng)用研究,2007,24(10):26-29.

        [13] 周中華,張惠然,謝 江.基于Python的新浪微博數(shù)據(jù)爬蟲[J].計(jì)算機(jī)應(yīng)用,2014,34(11):3131-3134.

        [14] 羅一紓.微博爬蟲的相關(guān)技術(shù)研究[D].哈爾濱:哈爾濱工業(yè)大學(xué),2013.

        [15] 朱云鵬,馮 楓,陳江寧.多策略融合的中文微博數(shù)據(jù)采集方法[J].計(jì)算機(jī)工程與設(shè)計(jì),2013,34(11):3835-3839.

        Research and Realization of Weibo Crawler with Java

        CHEN Ke,LAN Ding-dong,KE Wen-de,LI Shu-jun,DENG Wen-tian

        (College of Computer and Electronic Information,Guangdong University of Petrochemical Technology,Maoming 525000,China)

        In order to obtain more microblog data efficiently,a Java-based acquisition system of Sina is designed and developed for Weibo API,traditional crawler and Web version (com version),by which Weibo.cn Web site crawler system has been established through the breadth combination of traverse combination to collect web page source code and thus the page source code is more concise and purer,reducing network transmission pressure and the HTML source code analysis time.It mainly realizes the Weibo simulated logging,Weibo web crawling,Weibo page data extraction and task scheduling control,and analyzes the crawling data.The theme Weibo selection is added in the crawler.To verify its effectiveness and feasibility,the analysis and comparison is made with other traditional methods.The experimental results show that it is of higher efficiency with simpler code.

        Sina Weibo;Web crawler;Java;data mining

        2016-08-22

        :2016-11-24 < class="emphasis_bold">網(wǎng)絡(luò)出版時(shí)間

        時(shí)間:2017-07-11

        國家級大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃項(xiàng)目(201411656017,201611656002,201611656029,2016pyA033);廣東省自然科學(xué)基金(2016A030307049);廣東省高等學(xué)校學(xué)科與專業(yè)建設(shè)專項(xiàng)資金科研類項(xiàng)目(2013KJCX0132);廣東省云機(jī)器人(石油化工)工程技術(shù)研究中心開放基金項(xiàng)目(650007)

        陳 珂(1964-),男,碩士,教授,研究方向?yàn)閃eb數(shù)據(jù)挖掘、信息檢索;藍(lán)鼎棟(1992-),男,研究方向?yàn)閃eb數(shù)據(jù)挖掘、智能信息系統(tǒng)。

        http://kns.cnki.net/kcms/detail/61.1450.TP.20170711.1452.010.html

        TP39

        :A

        :1673-629X(2017)09-0191-06

        10.3969/j.issn.1673-629X.2017.09.042

        猜你喜歡
        頁面用戶信息
        大狗熊在睡覺
        刷新生活的頁面
        訂閱信息
        中華手工(2017年2期)2017-06-06 23:00:31
        關(guān)注用戶
        商用汽車(2016年11期)2016-12-19 01:20:16
        關(guān)注用戶
        商用汽車(2016年6期)2016-06-29 09:18:54
        關(guān)注用戶
        商用汽車(2016年4期)2016-05-09 01:23:12
        如何獲取一億海外用戶
        展會信息
        中外會展(2014年4期)2014-11-27 07:46:46
        同一Word文檔 縱橫頁面并存
        淺析ASP.NET頁面導(dǎo)航技術(shù)
        日韩亚洲午夜精品一区二区三区 | 少妇放荡的呻吟干柴烈火动漫| 99热成人精品免费久久| 久久久久久人妻一区二区三区| 亚洲熟妇网| 色婷婷一区二区三区77| 一区二区三区人妻少妇| 国产精品一区二区久久乐下载 | 欧美性巨大╳╳╳╳╳高跟鞋| 在线免费日韩| 亚洲视频精品一区二区三区| 蜜桃av噜噜一区二区三区策驰| 内射少妇36p亚洲区| 亚洲国产成人无码影院| 亚洲精品国产第一区三区| 国产精品无码制服丝袜| 无码少妇一区二区浪潮av| 亚洲区偷拍自拍29p| 亚洲一本二区偷拍精品| 夜夜躁狠狠躁日日躁视频| 性饥渴艳妇性色生活片在线播放| 亚洲色无码中文字幕| 久久亚洲中文字幕乱码| 亚洲国产成人精品无码区二本| 国产成人久久精品区一区二区| 国产精品av免费网站| 亚洲av日韩av激情亚洲| 欧美日韩亚洲国产精品| 无码中文字幕av免费放| 99久久精品人妻少妇一| 欧美性xxxx极品高清| 亚洲无毛片| 亚洲精品综合一区二区| 色狠狠色狠狠综合天天| 十八岁以下禁止观看黄下载链接 | 一本久久综合亚洲鲁鲁五月夫| 伊人久久精品亚洲午夜| 特级婬片国产高清视频| 亚洲成a人片在线观看中文!!!| 日韩免费精品在线观看| 国产揄拍国产精品|