日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

【附代碼】python爬取新浪微博(微博內(nèi)容,微博評(píng)論,用戶信息等)并進(jìn)

系統(tǒng) 8711 0

新浪微博數(shù)據(jù)抓取及情緒分析

  • 微博數(shù)據(jù)爬蟲
    • 開始爬蟲之前請(qǐng)先了解
    • 代碼實(shí)現(xiàn)
      • (一)利用高級(jí)搜索抓取指定微博
      • (二)抓取任意微博數(shù)據(jù)
  • 文本情緒分析
    • 工具及原理
    • 數(shù)據(jù)預(yù)處理和模型訓(xùn)練


本文包含內(nèi)容:借助Python抓取微博數(shù)據(jù),可以實(shí)現(xiàn)對(duì) 微博用戶信息 , 微博內(nèi)容,微博點(diǎn)贊數(shù)評(píng)論數(shù)轉(zhuǎn)發(fā)數(shù),評(píng)論內(nèi)容 等信息的抓取,并對(duì)抓取的數(shù)據(jù)進(jìn)行情緒分析

代碼實(shí)現(xiàn):微博用戶的行為與情感分析

爬蟲過程中如有問題請(qǐng) 留言 ,或者在github的代碼中開 issue ,我們會(huì)及時(shí)解答。


微博數(shù)據(jù)爬蟲

開始爬蟲之前請(qǐng)先了解

  • Q:有哪些微博提供的數(shù)據(jù)是我們可以利用的?
    A:微博數(shù)據(jù)可以分為幾類: 博文 相關(guān)數(shù)據(jù), 用戶信息 數(shù)據(jù),單條微博 評(píng)論 數(shù)據(jù), 社交關(guān)系 網(wǎng)絡(luò)數(shù)據(jù)。
    博文相關(guān)數(shù)據(jù) 包括:微博的URL,微博作者的ID,微博的內(nèi)容,發(fā)布的工具,微博發(fā)表時(shí)間,微博附帶圖的URL,轉(zhuǎn)發(fā)數(shù),評(píng)論數(shù),點(diǎn)贊數(shù),是否是轉(zhuǎn)發(fā)的微博,源微博的URL
    用戶信息 數(shù)據(jù)包括:用戶ID,昵稱,所在省,所在市,個(gè)人簡(jiǎn)介,生日,性別,會(huì)員等級(jí),認(rèn)證情況,微博發(fā)表數(shù),粉絲數(shù),關(guān)注數(shù)
    評(píng)論數(shù)據(jù) 包括:評(píng)論的URL,評(píng)論的用戶ID,weibo的URL,評(píng)論內(nèi)容,評(píng)論創(chuàng)建時(shí)間
    社交關(guān)系 網(wǎng)絡(luò)數(shù)據(jù)包括:關(guān)注者的用戶ID,被關(guān)注者的用戶ID
  • Q:抓取哪個(gè)微博平臺(tái)的數(shù)據(jù)?
    A:微博包含有手機(jī)端,網(wǎng)頁(yè)端,即 weibo.cn weibo.com ,對(duì)于爬取微博的數(shù)據(jù)這一任務(wù)而言,選擇 weibo.cn 是最好的,其網(wǎng)頁(yè)結(jié)構(gòu)更為簡(jiǎn)單,解析網(wǎng)頁(yè)更為方便,并且?guī)缀醢怂形覀冃枰臄?shù)據(jù),因此能用weibo.cn就不用其他的網(wǎng)站進(jìn)行爬蟲。 【附代碼】python爬取新浪微博(微博內(nèi)容,微博評(píng)論,用戶信息等)并進(jìn)行情緒分析_第1張圖片
  • Q:微博爬蟲存在哪些難點(diǎn)?
    A:微博登錄是微博爬蟲的一個(gè)基礎(chǔ),在爬蟲之前需要先實(shí)現(xiàn)微博的 自動(dòng)登錄 ,weibo.cn 和 weibo.com 兩者的自動(dòng)登錄方式是不一樣的,前者更為簡(jiǎn)單,本文講解的是前者的數(shù)據(jù)爬蟲,其自動(dòng)登錄方式為通過自動(dòng)化工具 selenium 獲取 cookie ,之后攜帶cookie發(fā)出請(qǐng)求。
    另外,微博可能存在 封帳號(hào) 的問題,因此可以買好小號(hào)用 小號(hào)抓取數(shù)據(jù) 。微博小號(hào)購(gòu)買地址
  • Q:使用的是什么工具?
    A:本文介紹的是使用 scrapy 框架構(gòu)建爬蟲。給定初始的url,爬蟲工具就會(huì)將該頁(yè)面下載下來,并解析該頁(yè)面的信息,得到該頁(yè)面的微博數(shù)據(jù),同時(shí)產(chǎn)生下一頁(yè)的地址,并接著去抓取下一頁(yè)
  • Q:如果需要抓取大量的微博數(shù)據(jù),有什么注意事項(xiàng)?
    A:與其他網(wǎng)站不同,微博不會(huì)封IP,因此不用構(gòu)建IP池,但是微博會(huì)存在封帳號(hào)的問題,因此需要構(gòu)建一個(gè) 賬號(hào)池 ,并針對(duì)賬號(hào)池中的所有賬號(hào)獲取cookie并存儲(chǔ)。賬號(hào)購(gòu)買地址上面已經(jīng)提供了,本文在抓取數(shù)據(jù)時(shí)最多購(gòu)買了40個(gè)賬號(hào),進(jìn)行多線程的大量微博數(shù)據(jù)抓取。

代碼實(shí)現(xiàn)

代碼實(shí)現(xiàn)地址:https://github.com/CUHKSZ-TQL/WeiboSpider_SentimentAnalysis

(一)利用高級(jí)搜索抓取指定微博

首先介紹附帶微博高級(jí)搜索功能的爬蟲步驟。請(qǐng)參考鏈接中的 WeiboSpider 文件夾中的內(nèi)容。

高級(jí)搜索意味著在抓取微博時(shí),可以對(duì)目標(biāo)微博的 發(fā)布時(shí)間,發(fā)布地點(diǎn),包含的關(guān)鍵詞,是否為熱門微博 等進(jìn)行限制,可以縮小爬蟲范圍,并且更具有實(shí)用性。一般而言如果要對(duì)抓取的數(shù)據(jù)進(jìn)行分析,都會(huì)采用這一方法來明確抓取的微博類型。
【附代碼】python爬取新浪微博(微博內(nèi)容,微博評(píng)論,用戶信息等)并進(jìn)行情緒分析_第2張圖片
本文提供的代碼可以抓取到 博文 相關(guān)數(shù)據(jù), 用戶 相關(guān)數(shù)據(jù)以及 微博評(píng)論 相關(guān)數(shù)據(jù)。

步驟:

  1. 安裝依賴
    mongodb
    phantomjs
    redis
    requirements.txt

  2. 構(gòu)建賬號(hào)池
    購(gòu)買微博小號(hào)
    將賬號(hào)密碼復(fù)制到 WeiboSpider/sina/account_build/account.txt
    運(yùn)行 WeiboSpider/sina/account_build/login.py
    運(yùn)行成功會(huì)顯示cookie創(chuàng)建成功

  3. 修改 WeiboSpider/sina/redis_init.py 中的日期,關(guān)鍵詞,運(yùn)行該文件進(jìn)行微博檢索(代碼中默認(rèn)抓取熱門微博,如需更改可將url中的sort設(shè)置為time)

  4. 開始爬蟲:
    運(yùn)行 WeiboSpider/sina/spider/weibo_spider.py 抓取目標(biāo)數(shù)據(jù)
    建議采取多線程同時(shí)抓取,提高速度
    Mac用戶在命令行中輸入 scrapy crawl weibo_spider
    Windows用戶在命令行中輸入 scrapy runspider weibo_spider.py

爬蟲過程截圖:
【附代碼】python爬取新浪微博(微博內(nèi)容,微博評(píng)論,用戶信息等)并進(jìn)行情緒分析_第3張圖片

(二)抓取任意微博數(shù)據(jù)

如果只是想要抓取任意微博,本文提供另外一種簡(jiǎn)單的方法,可以抓取目標(biāo)用戶的所有微博。請(qǐng)參考鏈接中的 WeiboSpiderSimple 文件夾中的內(nèi)容。

步驟:

  1. 安裝依賴
    mongodb
    requirements.txt
  2. 訪問 https://weibo.cn/ 并登陸,獲取對(duì)應(yīng)的cookie,將 WeiboSpiderSimple/sina/settings.py 中的cookie換成你自己獲取到的cookie
            
              DEFAULT_REQUEST_HEADERS = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:61.0) Gecko/20100101 Firefox/61.0',
    'Cookie':'OUTFOX_SEARCH_USER_ID_NCOO=1780588551.4011402; browser=d2VpYm9mYXhpYW4%3D; SCF=AsJyCasIxgS59OhHHUWjr9OAw83N3BrFKTpCLz2myUf2_vdK1UFy6Hucn5KaD7mXIoq8G25IMnTUPRRfr3U8ryQ.; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9WFGJINkqaLbAcTzz2isXDTA5JpX5KMhUgL.Foq0e0571hBp1hn2dJLoIp7LxKML1KBLBKnLxKqL1hnLBoMpe0ec1h5feKMR; SUB=_2A252a4N_DeRhGeBI61EV9CzPyD-IHXVVly03rDV6PUJbkdAKLRakkW1NRqYKs18Yrsf_SKnpgehmxRFUVgzXtwQO; SUHB=0U15b0sZ4CX6O4; _T_WM=0653fb2596917b052152f773a5976ff4; _WEIBO_UID=6603442333; SSOLoginState=1536482073; ALF=1539074073'
}

            
          
  1. 指定爬取的用戶ID將 WeiboSpiderSimple/sina/spider/weibo_spider.py 中的 start_uids 換成你想抓取的對(duì)象的微博ID。
  2. 開始爬蟲,執(zhí)行 scrapy crawl weibo_spider 或者直接在pycharm當(dāng)中運(yùn)行 WeiboSpiderSimple/sina/spider/weibo_spider.py

爬蟲過程截圖:
【附代碼】python爬取新浪微博(微博內(nèi)容,微博評(píng)論,用戶信息等)并進(jìn)行情緒分析_第4張圖片
【附代碼】python爬取新浪微博(微博內(nèi)容,微博評(píng)論,用戶信息等)并進(jìn)行情緒分析_第5張圖片
【附代碼】python爬取新浪微博(微博內(nèi)容,微博評(píng)論,用戶信息等)并進(jìn)行情緒分析_第6張圖片


文本情緒分析

工具及原理

基于Python的snowNLP庫(kù)作為情緒分析的模型。模型原理是機(jī)器學(xué)習(xí)中的樸素貝葉斯分類方法。在對(duì)文本進(jìn)行分詞和去除停用詞等一系列基礎(chǔ)處理后,將單句評(píng)論的詞匯作為模型的特征:
( ω 1 , ω 2 , . . . , ω n ) (\omega_1,\omega_2,...,\omega_n) ( ω 1 ? , ω 2 ? , . . . , ω n ? ) 再利用樸素貝葉斯公式打分:
P ( C 1 ∣ ω 1 , ω 2 , . . . , ω n ) = P ( ω 1 ∣ C 1 ) . . . P ( ω n ∣ C 1 ) P ( C 1 ) P ( ω 1 ) . . . P ( ω n ) P(C_1|\omega_1,\omega_2,...,\omega_n)=\frac{P(\omega_1|C_1)...P(\omega_n|C_1)P(C_1)}{P(\omega_1)...P(\omega_n)} P ( C 1 ? ω 1 ? , ω 2 ? , . . . , ω n ? ) = P ( ω 1 ? ) . . . P ( ω n ? ) P ( ω 1 ? C 1 ? ) . . . P ( ω n ? C 1 ? ) P ( C 1 ? ) ? 其中 C 1 C_1 C 1 ? 代表積極類情緒,等式右邊的計(jì)算基于訓(xùn)練好的模型,分?jǐn)?shù)越高代表語(yǔ)句越積極。實(shí)際上是計(jì)算了訓(xùn)練出的特征的條件概率。

數(shù)據(jù)預(yù)處理和模型訓(xùn)練

  1. 利用 jieba 分詞工具進(jìn)行分詞
  2. 使用哈工大停用詞表去除停用詞
  3. 基于 snowNLP 原有模型對(duì)數(shù)據(jù)進(jìn)行積極和消極情感的分類
  4. 得到情感標(biāo)簽后,計(jì)算每個(gè)詞在全部文本、積極文本和消極文本的頻率,用以訓(xùn)練新的模型

代碼參考:Sentiment analysis.ipynb


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。。?/p>

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 涿州市| 进贤县| 时尚| 七台河市| 沐川县| 无为县| 富裕县| 甘孜| 大厂| 高尔夫| 资中县| 梁平县| 黄骅市| 莱阳市| 满洲里市| 永靖县| 通化市| 平果县| 平邑县| 纳雍县| 隆林| 马鞍山市| 抚州市| 达日县| 双柏县| 美姑县| 孝感市| 临漳县| 金阳县| 贵州省| 长白| 高平市| 清新县| 南溪县| 建宁县| 新蔡县| 穆棱市| 常山县| 松原市| 保山市| 定日县|