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
賺錢方法
捕魚
主站蜘蛛池模板: 日韩在线1| 波多野结衣亚洲一区| 免费女人18毛片a级毛片视频| 97国产在线观看| 日韩在线网址| 国产在线91在线电影| 欧美精品二区| 久久精品中文无码资源站| 丰满人妻一区二区三区视频| 欧美不卡二区| 亚洲国产精品成人久久综合影院| 性欧美久久| 国产一级裸网站| 国产女同自拍视频| 自偷自拍三级全三级视频| 人人91人人澡人人妻人人爽 | 精品乱码久久久久久久| 国产高颜值露脸在线观看| 久久一本日韩精品中文字幕屁孩| 91精品久久久无码中文字幕vr| 亚洲AⅤ波多系列中文字幕| 婷婷六月在线| 午夜天堂视频| 亚洲成a人片| 激情无码视频在线看| 国产自视频| 亚洲精品第一在线观看视频| 婷婷午夜影院| 午夜国产理论| 亚洲不卡影院| 狠狠操夜夜爽| 国产内射一区亚洲| 99无码熟妇丰满人妻啪啪 | 欧洲熟妇精品视频| 一级毛片免费播放视频| 久草视频精品| 在线观看91精品国产剧情免费| 久久无码高潮喷水| 亚洲高清中文字幕| 婷婷色在线视频| 亚洲一区二区日韩欧美gif| 亚洲视屏在线观看| 久久人人爽人人爽人人片aV东京热| 无码又爽又刺激的高潮视频| 免费在线观看av| 免费观看国产小粉嫩喷水| 欧美一区国产| 精品视频免费在线| 97视频在线精品国自产拍| 国产成人h在线观看网站站| 激情综合婷婷丁香五月尤物| 亚洲日韩欧美在线观看| 久久久久88色偷偷| 亚洲91精品视频| 欧美日韩v| 久久亚洲AⅤ无码精品午夜麻豆| 久久久久久国产精品mv| 中文无码毛片又爽又刺激| 久久动漫精品| 91国内视频在线观看| 亚洲三级a| 精品国产福利在线| 亚洲最大福利网站| 婷婷五月在线| 国产精品欧美激情| 午夜精品区| 一级毛片在线播放| 欧美日韩精品综合在线一区| 亚洲香蕉久久| 91精品啪在线观看国产60岁| 精品伊人久久久久7777人| 伊在人亚洲香蕉精品播放| 国产成在线观看免费视频| 日韩在线欧美在线| 色屁屁一区二区三区视频国产| 国产第一页免费浮力影院| 久久国产精品77777| 日韩免费毛片| 五月激情婷婷综合| 日本三级欧美三级| 日韩精品一区二区深田咏美| 91久久夜色精品国产网站 |