999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Python的新浪微博用戶數據獲取技術

2018-04-03 07:11:21東南大學信息科學與工程學院
電子世界 2018年5期
關鍵詞:方法

東南大學信息科學與工程學院 羅 咪

引言

新浪微博作為我國主流社交媒體,擁有海量數據。自2009年推出以來,新浪微博的使用人數急速上升,帶來的是信息量的劇增。每天,人們通過轉發、互粉、點贊等行為發表自己的喜惡看法,將個人觀點放大到社會空間。在如今這個大數據時代,社交網絡分析依賴于海量的數據來探索人類社會關系中的奧秘,而如何獲取這些數據至關重要。在此之前,國外的研究學者已經對Twitter、You-Tube等社交平臺進行了一系列的分析,其研究方法相對成熟。他們獲取數據的主要方法是通過網站官方提供的API接口。[1]在國內,由于新浪官方目前限制相關數據接口的使用,所以研究者要想獲取數據,需另辟蹊徑。[2]

本文基于Python語言提出了一種無需借助官方API接口就能獲取用戶數據的方法---多線程爬蟲技術。該項技術與傳統的網絡爬蟲相比,主要有以下三點改進:首先,使用多線程爬蟲取代傳統的單線程爬蟲,提高了數據獲取速率;其次,針對微博的反爬蟲機制設計了四種突破策略;最后,成功實現了對于微博評論等動態網頁的爬取。

1.Scrapy多線程爬蟲框架

目前,用python實現多線程爬蟲主要有兩種方法。一是自行設計多線程函數,二是使用python的scrapy包來包裝線程對象。[3] 本爬蟲系統主要使用Scrapy框架編寫,Scrapy框架是一種引擎和下載器之間的框架,主要功能是處理Scrapy引擎與下載器之間的請求及響應。其基本組件和工作原理如圖1所示。

在Scrapy架構下,用戶需要編寫爬蟲部件spiders和數據處理部件item pipeline。

2.模擬登陸

模擬登陸是爬蟲技術所要攻克的第一個難題。所謂模擬登陸,即讓計算機模仿人工操作,以達到欺騙服務器的目的。我們分別嘗試了以下四種策略,并比較了它們的優劣性。

(1)手動獲取 cookie 登陸:該方法較為簡單,但是需要人為參與,自動化程度低。

(2)post 方法登陸weibo.com:該方法難度較高,主要因為以下三點。其一,網頁版微博上存在大量的廣告圖片,javascript代碼復雜,從而降低了后續工作中源碼分析的效率。[4]其二,官方分別使用了Base64 和 RSA 加密算法對用戶賬號和密碼進行了加密。其三,第一次跳轉到的URL在使用正則表達式匹配后才能得到目標主頁。

圖1 Scrapy多線程爬蟲框架原理圖

(3)post方法登陸weibo.cn:由于移動端頁面相對簡潔,網頁源碼較少,所以相對登陸網頁版更加簡單,但也存在兩個難點。其一,登陸時會出現驗證碼,本文采用的解決方法是下載到本地然后手動輸入。其二,登陸 http://weibo.cn/ 后會有一個重定向,這時必須設定user-agent,否則post完成后會卡在跳轉頁面。

(4)利用自動化測試工具Selenium: Selenium 是一個自動化測試工具,相當于一個沒有界面瀏覽器,可以完全模擬瀏覽器行為,所以利用它進行模擬登陸非常方便。[5]

3.動態網頁抓取

新浪微博與豆瓣、知乎等其他社交網站的區別在于:微博中很多網頁都是動態的,爬取有一定的難度,所以需要特殊處理。主要有兩種爬動態網站的策略可以選取。第一種方法是使用自動化測試工具selenium進行抓取,這主要是因為chrome driver可以渲染用javascript生成的網站。具體做法是先獲取網頁源碼,再使用 XPath路徑語言解析網頁。Selenium 抓取雖然簡潔方便,但存在抓取速率低效,不穩定的缺點,所以還可以使用解析json數據的方法。下面分別講解微博評論和用戶粉絲列表數據的獲取辦法。

3.1 微博評論抓取

首先,抓包尋找到網站ajax請求的接口,接著找尋該的接口url地址規律。例如,我們抓包后發現ajax請求為:

經過測試后,我們可以將該url接口簡化為:

從簡化后的url地址可以歸納出新浪微博評論的接口規律為:

下面,我們需要通過微博地址獲取這條微博獨一無二的id。經過網頁源碼分析我們發現,微博的id出現在網頁dom元素屬性的很多地方,而且都是以mid開頭,這樣就能根據網頁源碼正則匹配出這條微博的id。[6]最后只要改變url接口里的page參數,獲取所有評論源碼,再使用xpath提取出所需的評論數據即可。

3.2 微博粉絲列表抓取

以查看劉亦菲粉絲列表為例,抓包后得到結果如圖2所示。

圖2 劉亦菲粉絲列表抓包結果

可以得出粉絲列表的url地址為:

其中,每個粉絲擁有不同的containerid參數,而since_id從1到250都可以訪問,所以每次訪問這個url都可以返回含有20個粉絲信息的json數據。如圖3所示。

圖3 劉亦菲粉絲列表json數據返回結果

4.克服反爬蟲機制

為了防止個人盜取微博數據用于非法用途,新浪微博官方對微博爬蟲采取抵制態度,并且他們的反爬蟲機制也在不斷完善。如果爬蟲請求過于頻繁,賬戶容易被封禁,降低了數據獲取的效率。本系統采用以下4個策略突破微博的反爬蟲機制:

(1) 動態更改 user-agent:主要利用python的fake user agent包,讓每一次請求都偽造一個用戶代理,使服務器誤以為是來自不同瀏覽器的請求。從而降低爬蟲被發現的概率。

(2)動態更改 IP:首先獲取一串可用的高速代理 IP 列表,然后在每一次請求時更改 IP 地址,讓服務器無法鎖定具體的訪問地址,以達到迷惑服務器的目的。

(3)控制爬取速率:若爬取速率過快,服務器容易檢測出異常,所以速率一般控制在 1.5-2s為宜。

(4)建立并維護cookie 池:由于新浪微博會針對一個賬戶進行速率監控,所以更穩妥的方法是一次多獲取幾個 cookie,每次請求隨機設定一個 cookie。

5.總結

本文設計的新浪微博爬蟲使用python語言實現,并且可以根據實際需要更改爬取條件和爬取目標。在傳統靜態網頁爬蟲的基礎上,探討了針對新浪微博網站需要解決的三大問題: 模擬登陸、動態網頁信息抓取、反爬蟲機制,并給出了切實可行的解決方案。在動態網頁抓取中,需要應用自動化測試工具Selenium來模仿真正用戶的操作,以及利用正則表達式來匹配數據。值得一提的是,最終得到的數據往往與所需要的信息有細微差別,需要經過數據清洗才能進入分析的流程。實踐證明,該爬蟲系統能夠實現對微博數據高效穩定的采集,并符合實時性性、健壯性和靈活性等性能指標要求。

[1]Axel Bruns, Yuxian Eugene Liang. (2012). Tools and methods for capturing Twitter data during natural disasters. Peer-Reviewed Journal on the Internet, 17(4).Retrieved from:http://journals.uic.edu/ojs/index.php/fm/article/view/3937.

[2]吳劍蘭.基于Python的新浪微博爬蟲研究[J].無線互聯科技,2015(06):93-94.

[3]李俊麗.基于Linux的python多線程爬蟲程序設計[J].計算機與數字工程,2015,43(05):861-863+876.

[4]陳珂,藍鼎棟,柯文德,黎樹俊,鄧文天.基于Java的新浪微博爬蟲研究與實現[J].計算機技術與發展,2017,27(09):191-196.

[5]吳伶琳.基于Selenium的軟件自動化測試的研究與應用[J].計算機與現代化,2013(02):65-68.

[6]胡軍偉,秦奕青,張偉.正則表達式在Web信息抽取中的應用[J].北京信息科技大學學報(自然科學版),2011,26(06):86-89.

猜你喜歡
方法
中醫特有的急救方法
中老年保健(2021年9期)2021-08-24 03:52:04
高中數學教學改革的方法
河北畫報(2021年2期)2021-05-25 02:07:46
化學反應多變幻 “虛擬”方法幫大忙
變快的方法
兒童繪本(2020年5期)2020-04-07 17:46:30
學習方法
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
最有效的簡單方法
山東青年(2016年1期)2016-02-28 14:25:23
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 日本免费新一区视频| 国产免费a级片| 国产成人精品在线1区| 无码专区在线观看| 亚洲成人网在线观看| 精品视频在线观看你懂的一区| 久久亚洲综合伊人| 亚洲男人天堂久久| 欧美乱妇高清无乱码免费| 亚洲精品国产精品乱码不卞 | 久久窝窝国产精品午夜看片| 在线五月婷婷| 精品视频一区二区观看| 久久毛片网| jijzzizz老师出水喷水喷出| 亚洲日本中文字幕天堂网| 亚洲综合亚洲国产尤物| 中文字幕人妻无码系列第三区| 国产主播一区二区三区| 香蕉伊思人视频| 手机看片1024久久精品你懂的| 爱做久久久久久| 99国产在线视频| 久久国产乱子伦视频无卡顿| 久久96热在精品国产高清| 国产99在线| 中字无码精油按摩中出视频| 亚洲美女一区| 成人综合网址| 老色鬼久久亚洲AV综合| 精品成人免费自拍视频| 狠狠五月天中文字幕| 自拍偷拍欧美| 国产主播在线一区| 国产91熟女高潮一区二区| 欧美高清三区| 91在线激情在线观看| 欧美另类精品一区二区三区| 亚洲综合色婷婷| 欧美亚洲另类在线观看| 欧美精品v欧洲精品| 日韩国产综合精选| 久久久久亚洲精品成人网 | 亚洲av无码成人专区| 91在线播放国产| 国产一级小视频| 亚洲欧美日韩另类在线一| 国产综合亚洲欧洲区精品无码| 美女视频黄频a免费高清不卡| 午夜日本永久乱码免费播放片| 91久草视频| 91麻豆精品视频| 亚洲资源站av无码网址| 999国产精品| 亚洲人网站| 日本亚洲成高清一区二区三区| 激情無極限的亚洲一区免费| 国产成人精品一区二区不卡| 精品伊人久久久香线蕉| 69视频国产| 欧美国产日本高清不卡| 亚洲成人在线免费观看| 中文字幕人妻av一区二区| 国产福利2021最新在线观看| 国产精品99一区不卡| 亚洲成年网站在线观看| 国产高潮流白浆视频| 亚洲A∨无码精品午夜在线观看| 狠狠色成人综合首页| 国产va在线观看免费| 成人中文字幕在线| 色天天综合| 成人午夜福利视频| 九九热精品免费视频| 老司国产精品视频| 国产精品亚洲片在线va| 四虎永久免费地址| 91精品人妻互换| 国产精品2| 五月天久久婷婷| 国产美女久久久久不卡| 青青青国产在线播放|