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

基于微博平臺的用戶評論數據采集

2021-09-16 19:28:44黃紅桃江盈鋒
科技創新導報 2021年14期
關鍵詞:數據挖掘

黃紅桃 江盈鋒

摘? 要:微博的熱點事件會產生大量評論數據,這些數據是進行輿情分析和網絡水軍識別等數據挖掘的基礎。論文分析對比常用的網絡爬蟲技術和框架,分別使用Selenium框架和Json數據接口兩種方法,采集新浪微博熱點事件下的用戶評論數據。一般網絡爬蟲技術多使用廣度搜索,這里采用深度搜索,能夠更精確地獲得某個熱點事件下的用戶評論數據。

關鍵詞:數據挖掘? 微博? 用戶評論? 網絡爬蟲? Selenium? Json

中圖分類號:TP393.09;TP274.2? ? ? ? ?文獻標識碼:A文章編號:1674-098X(2021)05(b)-0132-05

Data Collection of User Comments Based on MicroBlog Platform

HUANG Hongtao? JIANG Yingfeng

(School of Information, Guangdong University of Foreign Studies, Guangzhou, Guangdong Province, 510006 China)

Abstract: Hot events on MicroBlog will generate a large amount of comment data, which is the basis for data mining such as public opinion analysis and online water army identification. The paper analyzes and compares commonly used web crawler technologies and frameworks, using Selenium framework and Json data interface respectively to collect user comment data under hot events on Sina MicroBlog. Generally, web crawling technology uses breadth search, and deep search is adopted here to obtain user comment data under a hot event more accurately.

Key Words: Data mining; MicroBlog; User comments; Web crawler; Selenium; Json

根據2021年2月發布的第47次《中國互聯網絡發展狀況統計報告》,截至2020年12月,我國網民規模達9.89億,較2020年3月增長8540萬,互聯網普及率達70.4%,較2020年3月提升5.9個百分點。截至2020年12月,我國手機網民規模達9.86億,較2020年3月增長8885萬,網民使用手機上網的比例達99.7%,較2020年3月提升0.4個百分點。數據表明我國的網民基數很大,并且網民使用手機上網的比例非常高。這就使得網民進入網絡的社區交流平臺(如微博、知乎)進行交流的門檻變低,機會變多。很多的網民包括不少網絡水軍在熱點事件中參與了評論,使得這些事件產生大量數據。

新浪微博是國內的用戶量極大、活躍度也很高的網絡社交平臺。一次熱點事件常常會有數以萬計、十萬計甚至百萬以上的評論數據。這些數據是進行輿情分析,網絡水軍識別等數據挖掘的基礎。

論文研究相關的網絡爬蟲技術,并以此來對用戶評論數據進行批量、自動化地采集。

1? 相關技術

1.1 爬蟲技術的類別

爬蟲技術具有如下的一些分類。

1.1.1 通用網絡爬蟲

通用網絡爬蟲又稱全網爬蟲(Scalable Web Crawler)[1],爬行對象從一些種子URL擴充到整個 Web,主要為門戶站點搜索引擎和大型Web服務提供商采集數據。由通用網絡爬蟲的結構大致可以分為頁面爬行模塊、頁面分析模塊、鏈接過濾模塊、頁面數據庫、URL隊列初始URL集合幾個部分。通用式爬蟲多用于廣度搜索優先策略。

1.1.2 聚焦網絡爬蟲

聚焦網絡爬蟲(Focused Crawler),又稱主題網絡爬蟲(Topical Crawler)[2],是指選擇性地爬行那些與預先定義好的主題相關頁面的網絡爬蟲。和通用網絡爬蟲相比,聚焦爬蟲只需要爬行與主題相關的頁面,極大地節省了硬件和網絡資源,保存的頁面也由于數量少而更新快,還可以很好地滿足一些特定人群對特定領域信息的需求。聚焦網絡爬蟲和通用網絡爬蟲相比,增加了鏈接評價模塊及內容評價模塊。聚焦爬蟲爬行策略實現的關鍵是評價頁面內容和鏈接的重要性,不同的方法計算出的重要性不同,由此導致鏈接的訪問順序也不同。

1.1.3 增量式爬蟲

增量式網絡爬蟲指的是對已經爬取過的網頁不再進行爬取,只爬取新產生的網頁,即增量式更新。與其他類型的網絡爬蟲相比,只關注新增的數據,網頁的下載量大大減少,降低了爬蟲的存儲空間與網絡帶寬的消耗,但是增加量抓取算法的復雜度和實現的難度[3]。

1.1.4 Deep Web爬蟲

從網頁在網站上呈現的不同的位置結構的角度來分析,可簡單將網頁分為淺層態網頁與深層態網頁。深層態網頁是指那些不能被通用搜索引擎所搜錄的存儲在web數據庫中的態網頁,其通常需要一定條件才能獲取(如登錄)。相對深層態網頁而言,淺層態網頁是指web上被搜索引擎搜錄的淺層態網頁。Deep Web往往具有較強的主題性,各Deep Web主題領域中蘊含的數信息專業性更強,內容更加豐富[4]。

1.2 常見的爬蟲框架

1.2.1 Selenium

Selenium是一個可操縱瀏覽器實行自動化測試的框架。可以通過簡單的指令控制瀏覽器自動化運行,如同真實用戶在操作一般,比如輸入驗證碼。Selenium是自動化測試工具,支持各種瀏覽器,包括 Chrome、Safari、Firefox等主流界面式瀏覽器。因此可用來爬取任何網頁上看到的任何數據信息,且幾乎可以避開絕大部分反爬蟲監控[5]。

1.2.2 Json 接口

Json(JavaScript Object Notation,JS對象標記)是一種輕量級的數據交換格式。它使用不同于編程語言的特殊的文本格式來進行保存數據和傳遞數據的操作。簡潔明了、清晰易懂的層次結構使得Json成為理想的數據交換語言。更容易人們讀取和編寫、機器解析和生成,并有效地提升網絡傳輸效率。Json文本格式具有兼容性非常高、有相似于C語言體系的習性行為、獨立于其他編程語言等特點。這些特性使Json成為理想的數據交換語言[6],并用于提供json數據接口的網頁進行數據采集。

1.2.3 Scrapy

Scrapy是一個通過Python實現的爬蟲框架,架構清晰,模塊之間的耦合程度相對較低,而且可擴展性也比較強,能夠靈活完成各種需求,具有使用簡單、代碼量小、可維護性好等特點[7]。Scrapy框架不僅能夠通過抓取網頁來獲取數據,還可以通過訪問API接口獲取其他對應的數據,實現對web資源多層次、快速的抓取,被應用于各類網站的抓取工作,提取其中有價值的結構數據[8]。

2? 數據采集

本次數據采集基于網絡社交平臺——新浪微博,采集的具體評論數據是https://weibo.com/1792951112/K3S5HcgZi?filter=hot&root_comment_id=0&type=comment#_rnd1619007657759 博文下的用戶評論。通過該博文的評論數目可以看出該博文下的評論數據非常多,已經達到了百萬級別的評論數據。接下來會采用爬蟲將其數據捕獲下來,并做一些分析。

根據采集的數據特性,以下選用增量式爬蟲和Deep Web爬蟲技術、selenium框架和json數據接口,分別對該微博評論數據進行采集。

2.1 使用Selenium框架采集數據

Selenium爬取評論的基本步驟如圖1所示。

首先要獲取其網頁源代碼(在網站上按F12查看),然后根據其源碼構造dom樹如圖2所示。

接下來就可以運用XPath解析dom樹,并根據相關的結點進行數據爬取,部分代碼如下所示。

user_data = requests.get(i)

dom_url = etree.HTML(user_data.text,etree.HTMLParser(encoding='utf-8'))

follow = dom_url.xpath('//div[@class="WB_innerwrap"]//strong[@class="W_f18"][1]/text()')

fan = dom_url.xpath('//div[@class="WB_innerwrap"]//strong[@class="W_f18"][2]/text()')

boke = dom_url.xpath('//div[@class="WB_innerwrap"]//strong[@class="W_f18"][3]/text()')

數據爬取完成之后可以選擇保存在xml、csv、txt等文本文件,這里選擇保存在csv文件中。

2.2 采用Json數據接口采集數據

與Selenium不同,Json數據接口可以相對直接獲取數據,因為其數據的組成結構是Json的格式,不過需要找到數據的接口。

因為微博的網頁版是不提供數據接口且反爬機制較先進,所以這里選用手機端的微博,手機端的微博的用戶評論是瀑布流式刷新的并且提供了Json的數據接口,例如其中一個接口:https://m.weibo.cn/comments/hotflow?id=4609229132925240&mid=4609229132925240&max_id_type=0, 其結構如下所示。

{ok: 1, data: {data: [,…], total_number: "100萬+",…}}

data: {data: [,…], total_number: "100萬+",…}

data: [,…]

0: {created_at: "Sat Feb 27 15:09:20 +0800 2021", id: "4609230964787737", rootid: "4609230964787737",…}

1: {created_at: "Sat Feb 27 15:04:59 +0800 2021", id: "4609229871121970", rootid: "4609229871121970",…}

…..

18: {created_at: "Sat Feb 27 15:05:08 +0800 2021", id: "4609229908872568", rootid: "4609229908872568",…}

max: 50000

max_id: 45846235480040570

max_id_type: 0

status: {comment_manage_info: {comment_permission_type: -1, approval_comment_type: 0}}

total_number: "100萬+"

ok: 1

在此結構下獲取其用戶評論較為直接,不過一個Json數據接口通常只能提供10×19條用戶評論,所以需要重新獲取下一個接口。由于手機端的微博是瀑布流式刷新用戶評論的,所以可以直接控制頁面往下拉刷新就可獲取下一個Json數據接口。觀察其數據接口鏈接可得知鏈接之中只有max_id和max_id_type會發生變化,因此通過多個Json數據鏈接可得出規律,下一個鏈接的max_id是上一個鏈接的Json字典里的max_id(json結構的倒數第六行),而max_id_type是在0和1兩個值之間取值。這個先用0判斷一下Json返回值的ok是否為1就可以判斷,若是max_id_type就取0,否則取1,部分代碼實現如下所示。

while (i < count):

while_starttime = datetime.datetime.now()

try:

if i == 0:

r = requests.get(one, headers=headers)

else:

b = '&max_id_type=0'

urlll = a + str(id) + b

r = requests.get(urlll, headers=headers)

flag = r.json()

flag1 = r.json()['ok']

if flag1 == 0:

b = '&max_id_type=1'

urlll = a + str(id) + b

r = requests.get(urlll, headers=headers)

js = r.json()

users = js['data']['data']

接下來就是對Json數據進行分解獲取,得到的數據同樣可以保存為xml表格、csv文件、txt文本文件等。

2.3 采集結果

兩種方法爬取的結果,都包含用戶id(用戶的唯一標識)、用戶名、評論時間、評論內容、評論獲贊數等,本次爬取共獲取了6000多條數據,可以為接下來的用戶評論的數據挖掘提供較大的數據量,結果如圖3所示。

3? 結語

本文使用兩種方法,均采用深度優先的搜索,獲取微博用戶評論數據。Selenium框架是先對網頁源代碼進行解析,生成dom樹,再通過dom樹來獲取其中的用戶評論數據。Json數據接口則是通過對Json數據結構的解析,直接獲取微博用戶的評論數據。實驗中,使用兩種方法對微博某一熱點事件下用戶評論數據的采集,都取得不錯的結果。

兩種數據采集方法各有優缺點。Selenium可以模擬真實人的行為進行抓取數據,基本不受網頁的限制,但前期過程會較為繁瑣且爬取的效率不太高。Json數據接口直接簡單,但獲取數據需要詳細的尋找出隱藏的接口位置,有時還需要尋找下一個接口并總結其鏈接規律,還有就是部分網站不提供數據接口。在實際操作可以根據具體需求,結合這兩種技術的優缺點來選取其中一種方法。

參考文獻

[1] 曾健榮,張仰森,鄭佳,等.面向多數據源的網絡爬蟲實現技術及應用[J].計算機科學,2019,46(5):304-309.

[2] Guo S, Bian W, Liu Y, et al. Research on the application of SVM-based focused crawler for space intelligence collection[J]. Electronic Design Engineering,2016,24(17):28-34

[3] 葉婷.基于關鍵詞的微博爬蟲系統的設計與實現[D].杭州:浙江工 業大學,2016.

[4] 楊曉夫.汽車票務DeepWeb數據采集關鍵技術研究[D].重慶:重慶交通大學,2016.

[5] 呂博慶.基于爬蟲與數據挖掘的電商頁面信息分析[D].蘭州:蘭州大學,2018.

[6] 陳哲.基于微博熱點事件的可視化系統的開發與實現[D].北京:首都經濟貿易大學,2018.

[7] 孫瑜.基于Scrapy框架的網絡爬蟲系統的設計與實現[D].北京:北京交通大學,2019.

[8] 崔新宇.基于情感分析的商品評價系統設計與實現[D].邯鄲:河北工程大學,2020.

猜你喜歡
數據挖掘
基于數據挖掘的船舶通信網絡流量異常識別方法
探討人工智能與數據挖掘發展趨勢
數據挖掘技術在打擊倒賣OBU逃費中的應用淺析
基于并行計算的大數據挖掘在電網中的應用
電力與能源(2017年6期)2017-05-14 06:19:37
數據挖掘技術在中醫診療數據分析中的應用
一種基于Hadoop的大數據挖掘云服務及應用
數據挖掘在高校圖書館中的應用
數據挖掘的分析與探索
河南科技(2014年23期)2014-02-27 14:18:43
基于GPGPU的離散數據挖掘研究
利用數據挖掘技術實現LIS數據共享的開發實踐
主站蜘蛛池模板: 蝴蝶伊人久久中文娱乐网| 日韩成人午夜| 日本午夜影院| 亚洲av日韩av制服丝袜| 国产中文在线亚洲精品官网| 国产情精品嫩草影院88av| 中文无码日韩精品| 999精品视频在线| 69免费在线视频| 亚洲福利网址| 国产成人盗摄精品| 国产免费网址| 波多野结衣一区二区三视频| 呦女亚洲一区精品| 国产美女主播一级成人毛片| 亚洲综合婷婷激情| 国产亚洲精品自在线| 少妇精品久久久一区二区三区| 国产成熟女人性满足视频| 全午夜免费一级毛片| 五月综合色婷婷| 亚洲一区二区三区麻豆| 4虎影视国产在线观看精品| 一级成人a毛片免费播放| 99精品欧美一区| 国产91九色在线播放| 欧美日韩一区二区三区在线视频| 韩国v欧美v亚洲v日本v| 国产精品福利一区二区久久| 99偷拍视频精品一区二区| 直接黄91麻豆网站| 免费观看成人久久网免费观看| 久久狠狠色噜噜狠狠狠狠97视色| 国产国模一区二区三区四区| 中文字幕久久精品波多野结| 婷婷亚洲综合五月天在线| 国产性生大片免费观看性欧美| 国产成人精品免费av| 国产毛片久久国产| 高清无码手机在线观看| 国产极品美女在线播放| 好紧太爽了视频免费无码| 日韩高清成人| 亚洲色图欧美激情| 在线欧美日韩国产| 亚洲视屏在线观看| 97亚洲色综久久精品| 麻豆a级片| 91精品国产自产在线老师啪l| 精品少妇人妻无码久久| 黄色网在线免费观看| 91福利国产成人精品导航| 久久久久中文字幕精品视频| 国产成人精品亚洲日本对白优播| 欧美日韩在线亚洲国产人| 亚洲精品无码久久久久苍井空| 欧美狠狠干| 日本国产精品一区久久久| 国产交换配偶在线视频| 韩国v欧美v亚洲v日本v| 性色生活片在线观看| 亚洲人成网7777777国产| 少妇精品网站| 欧美亚洲国产精品第一页| 91精品视频在线播放| 91欧美在线| 性欧美久久| 真实国产乱子伦高清| 国产精品视频999| 国产免费怡红院视频| 亚洲国产高清精品线久久| 欧美午夜小视频| 一级全黄毛片| 国产免费久久精品99re丫丫一| 高清无码手机在线观看| 亚洲婷婷六月| 青青操视频在线| 她的性爱视频| 中文字幕亚洲综久久2021| 日本一区二区不卡视频| 亚洲无码精彩视频在线观看| 日本黄色不卡视频|