爬取微博用戶數據

前言

微博數據基本上可以說是社交圈里面最大的了。但是單純的使用urllib,是不足以獲取數據的。

今天來使用Cookie的方式繞開微博權限驗證這一關卡, 爬取一下數據。

查找的過程

打開ChromeF12之后,刷新頁面,真的是眼花繚亂的數據流啊,飛流直下。找了好久,發現大部分數據都是通過JavaScript腳本渲染到頁面上的。

這也就是為什么單純的使用urllib抓不到的原因了。因為這是動態頁面,而Urllib則是抓取靜態頁面。明白了這一點,就找到了方向了。

那就是找到數據源接口。后來經過我的仔細審核,發現了類似于這樣的一個URL。

http://weibo.com/p/aj/v6/mblog/mbloglist?ajwvr=6&domain=103505&is_search=0&visible=0&is_hot=1&is_tag=0&profile_ftype=1&page=2&pagebar=0&pl_name=Pl_Official_MyProfileFeed__23&id=1035051198367585&script_uri=/kqdpku&feed_type=0&pre_page=2&domain_op=103505&__rnd=1495367966928
接口數據源

然后發現服務器端返回的數據內容是JSON格式的。大致內容如下;

關聯頁碼的服務器端返回的數據

然后這姑且算是找到一個人的數據了吧。那么問題接著來了,如果我想看其他人的頁面怎么辦呢?

思路有如下兩個:

  • 一是按照剛才的方法,一個個的去查找。(費時費力,不贊同)
  • 二是走捷徑,對比URL,我們會發現一個domain的參數,而對應的值就是目標博主的ID。
    比如我要看劉強東的主頁,http://weibo.com/p/1003061866402485/home?from=page_100306&mod=TAB&is_hot=1#place
    里面的from參數的page值后面的數據就是我們需要的domain值了。拿過來就可以直接使用。

核心

經過了剛才的各種鋪墊,下面直接上代碼。體驗一把吧。

# coding: utf8

# @Author: 郭 璞
# @File: login.py                                                                 
# @Time: 2017/5/21                                   
# @Contact: 1064319632@qq.com
# @blog: http://blog.csdn.net/marksinoberg
# @Description: 新浪微博登錄測試

import requests
import json
from bs4 import BeautifulSoup
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36',
    'Host': 'weibo.com'
}

Cookies = {
    "Cookie": "SCF=Asl3BNSxfmhmaP2cIVfnvOp-mmfHwOPYfdoMZIz6y4WtkH4xK0jdB0Hr0Tll4RzJ0xUHIi5HOLBAjEASrqSGDiQ.; SUB=_2A250JQA2DeThGeNI41UX8ifJyziIHXVXU3b-rDV8PUNbmtBeLWbGkW9yh-AUBKZFFYCHZ2zA0zH1I-l4dg..; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9W5yNOfs44nTEDRpARDUs7Yl5JpX5K2hUgL.Fo-c1hMceo.fehB2dJLoIcBLxK-LBo5L12qLxK-LBo5L12qLxK-LBo5L12qLxK-LBo5L12qLxK-LBo5L12qpi--fi-z7iKysi--fi-z7iKysi--Ni-z0i-8si--Ni-zpi-z0i--fiKLFi-2Ei--fi-82iK.7; SUHB=0HTxO_F0SbtSsP; ALF=1526899685; SSOLoginState=1495363686; YF-V5-G0=8d4d030c65d0ecae1543b50b93b47f0c; _s_tentry=my.sina.com.cn; Apache=9206065364153.127.1495363942807; SINAGLOBAL=9206065364153.127.1495363942807; ULV=1495363942825:1:1:1:9206065364153.127.1495363942807:; YF-Page-G0=fc0a6021b784ae1aaff2d0aa4c9d1f17; YF-Ugrow-G0=ea90f703b7694b74b62d38420b5273df; wvr=6; wb_publish_fist100_5687629504=1; UOR=blog.csdn.net,widget.weibo.com,www.sina.com.cn"
}


# 劉強東
url = 'http://weibo.com/p/aj/v6/mblog/mbloglist?ajwvr=6&domain=103505&is_search=0&visible=0&is_hot=1&is_tag=0&profile_ftype=1&page=2&pagebar=0&pl_name=Pl_Official_MyProfileFeed__23&id=1035051198367585&script_uri=/kqdpku&feed_type=0&pre_page=1&domain_op=100306&__rnd=1495367966928'
response = requests.get(url=url, headers=headers, cookies=Cookies)

data = json.loads(response.text)

result = data['data']

soup = BeautifulSoup(result, 'html.parser')

blogs = soup.find_all('div', {'class': 'WB_detail'})
for blog in blogs[0:8]:
    print("微博發文:", blog.find_all('div')[2].get_text())
    # 為了減少控制臺內容輸出,這里注釋掉即可
    # print("配圖:", blog.find_all('div', {'class': 'media_box'}))
    print('======='*36)

# WB_innerwrap

運行結果如何呢?

C:\Users\biao\Desktop\network\env\Scripts\python.exe C:/Users/biao/Desktop/network/code/sina/login.py
微博發文: 
                                                                                                    騙人,南通沒有普洱!//@普洱玫瑰湯:啊哈,我也是南通人呢。                                            
===========================================================
微博發文: 
                                                                                                    回復@流氓無產者劉爺:即使那樣死了,無恥的看客們還要說不過癮哩。//@流氓無產者劉爺:不僅不應該收費,還應該累死餓死是不?還應該綁著炸彈跟恐怖分子對炸去是不?還應該拎著菜刀跟漢奸對砍去是不?說話之前掂量掂量自己,考慮考慮別人不行么?                                            
===========================================================
微博發文: 
                                                                                                    給隊里多買點。                                            
===========================================================
微博發文: 
                                                                                                    聰明。//@遇見那兵荒馬亂:還是那天紅場閱兵那天您閱的未名湖嗎?                                            
===========================================================
微博發文: 
                                                                                                    你這眼神啊!//@鐵匠--孫:上面怎么還有肉渣渣,還是饞嘴                                            
===========================================================
微博發文: 
                                                                                                    這哥倆才超過五百。                                            
===========================================================
微博發文: 
                                                                                                    順也是一種孝,但不可機械教條。//@夜半有人私語時:以前只知道“以順行孝”,原來也可以“以諫行孝”。謝謝孔老師。                                            
===========================================================
微博發文: 
                                                                                                    美夢與歹命。我回答了 @NEW七七 的問題,問題價值¥433.00,大家快來花1元圍觀~ O微博問答 ????                                            
===========================================================
Process finished with exit code 0

如此,微博數據也能搞到手了。

總結

使用Cookie繞開登錄選項,確實是一個比較好的捷徑。但是由于時效的問題,治標不治本。

從上面的結果也可以看出,這里簡單的打印出了前幾條數據內容。也算是拋磚引玉了。而且對比網頁源碼之后,我發現了更多好玩的數據源。圖片,短視頻,都會是很好的素材。

然后對XX進行文本分析,做成詞云啊,或者做一下社交網絡分析啊等等。

今天其實真的是太閑了,所以才搞了一下微博數據的爬取。文章內容,排版都挺失敗的。(⊙﹏⊙)b

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,836評論 6 540
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,275評論 3 428
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,904評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,633評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,368評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,736評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,740評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,919評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,481評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,235評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,427評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,968評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,656評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,055評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,348評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,160評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,380評論 2 379

推薦閱讀更多精彩內容