【數據分析】快速獲取微博用戶數據,圖片,視頻

  • 功能
  • 輸出
  • 實例
  • 運行環境
  • 使用說明
    • 下載腳本
    • 安裝依賴
    • 程序設置
    • 設置數據庫(可選)
    • 運行腳本
    • 按需求修改腳本(可選)
  • 如何獲取user_id
  • 添加cookie與不添加cookie的區別(可選)
  • 如何獲取cookie(可選)
  • 如何檢測cookie是否有效(可選)

功能

連續爬取一個多個新浪微博用戶(如Dear-迪麗熱巴、郭碧婷)的數據,并將結果信息寫入文件。寫入信息幾乎包括了用戶微博的所有數據,主要有用戶信息微博信息兩大類,前者包含用戶昵稱、關注數、粉絲數、微博數等等;后者包含微博正文、發布時間、發布工具、評論數等等,因為內容太多,這里不再贅述,詳細內容見輸出部分。具體的寫入文件類型如下:

  • 寫入csv文件(默認)
  • 寫入json文件(可選)
  • 寫入MySQL數據庫(可選)
  • 寫入MongoDB數據庫(可選)
  • 下載用戶原創微博中的原始圖片(可選)
  • 下載用戶轉發微博中的原始圖片(可選)
  • 下載用戶原創微博中的視頻(可選)
  • 下載用戶轉發微博中的視頻(可選)
  • 下載用戶原創微博Live Photo中的視頻(可選)
  • 下載用戶轉發微博Live Photo中的視頻(可選)

輸出

用戶信息

  • 用戶id:微博用戶id,如"1669879400"
  • 用戶昵稱:微博用戶昵稱,如"Dear-迪麗熱巴"
  • 性別:微博用戶性別
  • 微博數:用戶的全部微博數(轉發微博+原創微博)
  • 粉絲數:用戶的粉絲數
  • 關注數:用戶關注的微博數量
  • 簡介:用戶簡介
  • 主頁地址:微博移動版主頁url,如https://m.weibo.cn/u/1669879400?uid=1669879400&luicode=10000011&lfid=1005051669879400
  • 頭像url:用戶頭像url
  • 高清頭像url:用戶高清頭像url
  • 微博等級:用戶微博等級
  • 會員等級:微博會員用戶等級,普通用戶該等級為0
  • 是否認證:用戶是否認證,為布爾類型
  • 認證類型:用戶認證類型,如個人認證、企業認證、政府認證等
  • 認證信息:為認證用戶特有,用戶信息欄顯示的認證信息

微博信息

  • 微博id:微博的id,為一串數字形式
  • 微博bid:微博的bid,與cookie版中的微博id是同一個值
  • 微博內容:微博正文
  • 原始圖片url:原創微博圖片和轉發微博轉發理由中圖片的url,若某條微博存在多張圖片,則每個url以英文逗號分隔,若沒有圖片則值為’’
  • 視頻url: 微博中的視頻url和Live Photo中的視頻url,若某條微博存在多個視頻,則每個url以英文分號分隔,若沒有視頻則值為’’
  • 微博發布位置:位置微博中的發布位置
  • 微博發布時間:微博發布時的時間,精確到天
  • 點贊數:微博被贊的數量
  • 轉發數:微博被轉發的數量
  • 評論數:微博被評論的數量
  • 微博發布工具:微博的發布工具,如iPhone客戶端、HUAWEI Mate 20 Pro等,若沒有則值為’’
  • 話題:微博話題,即兩個#中的內容,若存在多個話題,每個url以英文逗號分隔,若沒有則值為’’
  • @用戶:微博@的用戶,若存在多個@用戶,每個url以英文逗號分隔,若沒有則值為’’
  • 原始微博:為轉發微博所特有,是轉發微博中那條被轉發的微博,存儲為字典形式,包含了上述微博信息中的所有內容,如微博id、微博內容等等
  • 結果文件:保存在當前目錄weibo文件夾下以用戶昵稱為名的文件夾里,名字為"user_id.csv"形式
  • 微博圖片:微博中的圖片,保存在以用戶昵稱為名的文件夾下的img文件夾里
  • 微博視頻:微博中的視頻,保存在以用戶昵稱為名的文件夾下的video文件夾里

實例

以爬取迪麗熱巴的微博為例,我們需要修改config.json文件,文件內容如下:

{"user_id_list": ["1669879400"],"filter": 1,"since_date": "1900-01-01","write_mode": ["csv"],"original_pic_download": 1,"retweet_pic_download": 0,"original_video_download": 1,"retweet_video_download": 0,"cookie": "your cookie"
}

對于上述參數的含義以及取值范圍,這里僅作簡單介紹,詳細信息見程序設置。

user_id_list代表我們要爬取的微博用戶的user_id,可以是一個或多個,也可以是文件路徑,微博用戶Dear-迪麗熱巴的user_id為1669879400,具體如何獲取user_id見如何獲取user_id;
filter的值為1代表爬取全部原創微博,值為0代表爬取全部微博(原創+轉發);
since_date代表我們要爬取since_date日期之后發布的微博,因為我要爬迪麗熱巴的全部原創微博,所以since_date設置了一個非常早的值;
write_mode代表結果文件的保存類型,我想要把結果寫入csv文件和json文件,所以它的值為[“csv”, “json”],如果你想寫入數據庫,具體設置見設置數據庫;
original_pic_download值為1代表下載原創微博中的圖片,值為0代表不下載;
retweet_pic_download值為1代表下載轉發微博中的圖片,值為0代表不下載;
original_video_download值為1代表下載原創微博中的視頻,值為0代表不下載;
retweet_video_download值為1代表下載轉發微博中的視頻,值為0代表不下載;
cookie是可選參數,可填可不填,具體區別見添加cookie與不添加cookie的區別。

配置完成后運行程序:

$ python weibo.py

程序會自動生成一個weibo文件夾,我們以后爬取的所有微博都被存儲在weibo文件夾里。然后程序在該文件夾下生成一個名為"Dear-迪麗熱巴"的文件夾,迪麗熱巴的所有微博爬取結果都在這里。"Dear-迪麗熱巴"文件夾里包含一個csv文件、一個img文件夾和一個video文件夾,img文件夾用來存儲下載到的圖片,video文件夾用來存儲下載到的視頻。如果你設置了保存數據庫功能,這些信息也會保存在數據庫里,數據庫設置見設置數據庫部分。

csv文件結果如下所示:
在這里插入圖片描述3267187212.csv

本csv文件是爬取“全部微博”(原創微博+轉發微博)的結果文件。因為迪麗熱巴很多微博本身都沒有圖片、發布工具、位置、話題和@用戶等信息,所以當這些內容沒有時對應位置為空。“是否原創"列用來標記是否為原創微博,
當為轉發微博時,文件中還包含轉發微博的信息。為了簡便起見,姑且將轉發微博中被轉發的原始微博稱為源微博,它的用戶id、昵稱、微博id等都在名稱前加上源字,以便與目標用戶自己發的微博區分。對于轉發微博,程序除了獲取用戶原創部分的信息,還會獲取源用戶id源用戶昵稱源微博id源微博正文源微博原始圖片url源微博位置源微博日期源微博工具源微博點贊數源微博評論數源微博轉發數源微博話題源微博@用戶等信息。原創微博因為沒有這些轉發信息,所以對應位置為空。若爬取的是"全部原創微博”,則csv文件中不會包含"是否原創"及其之后的轉發屬性列;

為了說明json結果文件格式,這里以迪麗熱巴2019年12月27日到2019年12月28日發的2條微博為例。

json結果文件格式如下:

{"user": {"id": "1669879400","screen_name": "Dear-迪麗熱巴","gender": "f","statuses_count": 1085,"followers_count": 65585238,"follow_count": 248,"description": "一只喜歡默默表演的小透明。工作聯系jaywalk@jaywalk.com.cn 🍒","profile_url": "https://m.weibo.cn/u/1669879400?uid=1669879400&luicode=10000011&lfid=1005051669879400","profile_image_url": "https://tvax1.sinaimg.cn/crop.0.0.996.996.180/63885668ly8fjf57kfmgfj20ro0ro0u7.jpg?KID=imgbed,tva&Expires=1578329741&ssig=3jZYwOBVPM","avatar_hd": "https://wx1.sinaimg.cn/orj480/63885668ly8fjf57kfmgfj20ro0ro0u7.jpg","urank": 44,"mbrank": 7,"verified": true,"verified_type": 0,"verified_reason": "嘉行傳媒簽約演員 "},"weibo": [{"user_id": 1669879400,"screen_name": "Dear-迪麗熱巴","id": 4454572602912349,"bid": "ImTGkcdDn","text": "今天的#星光大賞#  ","pics": "https://wx3.sinaimg.cn/large/63885668ly1gacppdn1nmj21yi2qp7wk.jpg,https://wx4.sinaimg.cn/large/63885668ly1gacpphkj5gj22ik3t0b2d.jpg,https://wx4.sinaimg.cn/large/63885668ly1gacppb4atej22yo4g04qr.jpg,https://wx2.sinaimg.cn/large/63885668ly1gacpn0eeyij22yo4g04qr.jpg","video_url": "","location": "","created_at": "2019-12-28","source": "","attitudes_count": 551894,"comments_count": 182010,"reposts_count": 1000000,"topics": "星光大賞","at_users": ""},{"user_id": 1669879400,"screen_name": "Dear-迪麗熱巴","id": 4454081098040623,"bid": "ImGTzxJJt","text": "我最愛用的嬌韻詩雙萃精華穿上限量“金”裝啦,希望阿絲兒們跟我一起在新的一年更美更年輕,喜笑顏開沒有細紋困擾!限定新春禮盒還有祝福悄悄話,大家了解一下~","pics": "","video_url": "","location": "","created_at": "2019-12-27","source": "","attitudes_count": 190840,"comments_count": 43523,"reposts_count": 1000000,"topics": "","at_users": "","retweet": {"user_id": 1684832145,"screen_name": "法國嬌韻詩","id": 4454028484570123,"bid": "ImFwIjaTF","text": "#點萃成金 年輕煥新# 將源自天然的植物力量,轉化為滴滴珍貴如金的雙萃精華。這份點萃成金的獨到匠心,只為守護嬌粉們的美麗而來。點擊視頻,與@Dear-迪麗熱巴 一同邂逅新年限量版黃金雙萃,以閃耀開運金,送上新春寵肌臻禮。 跟著迪迪選年貨,還有雙重新春驚喜,愛麗絲們看這里! 第一重參與微淘活動邀請好友關注嬌韻詩天貓旗艦店,就有機會贏取限量款熱巴新年禮盒,打開就能聆聽仙女迪親口送出的新春祝福哦!點擊網頁鏈接下單曬熱巴同款黃金雙萃,并且@法國嬌韻詩,更有機會獲得熱巴親筆簽名的禮盒哦! 第二重轉評說出新年希望嬌韻詩為你解決的肌膚愿望,截止至1/10,小嬌將從鐵粉中抽取1位嬌粉送出限量版熱巴定制禮盒,抽取3位嬌粉送出熱巴明信片1張~ #迪麗熱巴代言嬌韻詩#養成同款御齡美肌,就從現在開始。法國嬌韻詩的微博視頻","pics": "","video_url": "http://f.video.weibocdn.com/003vQjnRlx07zFkxIMjS010412003bNx0E010.mp4?label=mp4_hd&template=852x480.25.0&trans_finger=62b30a3f061b162e421008955c73f536&Expires=1578322522&ssig=P3ozrNA3mv&KID=unistore,video","location": "","created_at": "2019-12-27","source": "微博 weibo.com","attitudes_count": 18389,"comments_count": 3201,"reposts_count": 1000000,"topics": "點萃成金 年輕煥新,迪麗熱巴代言嬌韻詩","at_users": "Dear-迪麗熱巴,法國嬌韻詩"}}]
}

1669879400.json

下載的圖片如下所示:

在這里插入圖片描述)img文件夾

本次下載了788張圖片,大小一共1.21GB,包括她原創微博中的所有圖片。圖片名為yyyymmdd+微博id的形式,若某條微博存在多張圖片,則圖片名中還會包括它在微博圖片中的序號。若某圖片下載失敗,程序則會以“weibo_id:pic_url”的形式將出錯微博id和圖片url寫入同文件夾下的not_downloaded.txt里;若圖片全部下載成功則不會生成not_downloaded.txt;



下載的視頻如下所示:
video文件夾

本次下載了66個視頻,是她原創微博中的視頻和原創微博Live Photo中的視頻,視頻名為yyyymmdd+微博id的形式。有三個視頻因為網絡原因下載失敗,程序將它們的微博id和視頻url分別以“weibo_id:video_url”的形式寫到了同文件夾下的not_downloaded.txt里。

因為我本地沒有安裝MySQL數據庫和MongoDB數據庫,所以暫時設置成不寫入數據庫。如果你想要將爬取結果寫入數據庫,只需要先安裝數據庫(MySQL或MongoDB),再安裝對應包(pymysql或pymongo),然后將mysql_write或mongodb_write值設置為1即可。寫入MySQL需要用戶名、密碼等配置信息,這些配置如何設置見設置數據庫部分。

運行環境

  • 開發語言:python2/python3
  • 系統: Windows/Linux/macOS

使用說明

1.下載腳本

$ git clone https://github.com/dataabc/weibo-crawler.git

運行上述命令,將本項目下載到當前目錄,如果下載成功當前目錄會出現一個名為"weibo-crawler"的文件夾;

2.安裝依賴

$ pip install -r requirements.txt

3.程序設置

打開config.json文件,你會看到如下內容:

{"user_id_list": ["1669879400"],"filter": 1,"since_date": "2018-01-01","write_mode": ["csv"],"original_pic_download": 1,"retweet_pic_download": 0,"original_video_download": 1,"retweet_video_download": 0,"mysql_config": {"host": "localhost","port": 3306,"user": "root","password": "123456","charset": "utf8mb4"}
}

下面講解每個參數的含義與設置方法。

設置user_id_list

user_id_list是我們要爬取的微博的id,可以是一個,也可以是多個,例如:

"user_id_list": ["1223178222", "1669879400", "1729370543"],

上述代碼代表我們要連續爬取user_id分別為“1223178222”、 “1669879400”、 “1729370543”的三個用戶的微博,具體如何獲取user_id見如何獲取user_id。

user_id_list的值也可以是文件路徑,我們可以把要爬的所有微博用戶的user_id都寫到txt文件里,然后把文件的位置路徑賦值給user_id_list。

在txt文件中,每個user_id占一行,也可以在user_id后面加注釋(可選),如用戶昵稱等信息,user_id和注釋之間必需要有空格,文件名任意,類型為txt,位置位于本程序的同目錄下,文件內容示例如下:

1223178222 胡歌
1669879400 迪麗熱巴
1729370543 郭碧婷

假如文件叫user_id_list.txt,則user_id_list設置代碼為:

"user_id_list": "user_id_list.txt",

設置filter

filter控制爬取范圍,值為1代表爬取全部原創微博,值為0代表爬取全部微博(原創+轉發)。例如,如果要爬全部原創微博,請使用如下代碼:

"filter": 1,

設置since_date

since_date值可以是日期,也可以是整數。如果是日期,代表爬取該日期之后的微博,格式應為“yyyy-mm-dd”,如:

"since_date": "2018-01-01",

代表爬取從2018年1月1日到現在的微博。

如果是整數,代表爬取最近n天的微博,如:

"since_date": 10,

代表爬取最近10天的微博,這個說法不是特別準確,準確說是爬取發布時間從10天前到本程序開始執行時之間的微博。

設置write_mode

write_mode控制結果文件格式,取值范圍是csv、json、mongo和mysql,分別代表將結果文件寫入csv、json、MongoDB和MySQL數據庫。write_mode可以同時包含這些取值中的一個或幾個,如:

"write_mode": ["csv", "json"],

代表將結果信息寫入csv文件和json文件。特別注意,如果你想寫入數據庫,除了在write_mode添加對應數據庫的名字外,還應該安裝相關數據庫和對應python模塊,具體操作見設置數據庫部分。

設置original_pic_download

original_pic_download控制是否下載原創微博中的圖片,值為1代表下載,值為0代表不下載,如

"original_pic_download": 1,

代表下載原創微博中的圖片。

設置retweet_pic_download

retweet_pic_download控制是否下載轉發微博中的圖片,值為1代表下載,值為0代表不下載,如

"retweet_pic_download": 0,

代表不下載轉發微博中的圖片。特別注意,本設置只有在爬全部微博(原創+轉發),即filter值為0時生效,否則程序會跳過轉發微博的圖片下載。

設置original_video_download

original_video_download控制是否下載原創微博中的視頻和原創微博Live Photo中的視頻,值為1代表下載,值為0代表不下載,如

"original_video_download": 1,

代表下載原創微博中的視頻和原創微博Live Photo中的視頻。

設置retweet_video_download

retweet_video_download控制是否下載轉發微博中的視頻和轉發微博Live Photo中的視頻,值為1代表下載,值為0代表不下載,如

"retweet_video_download": 0,

代表不下載轉發微博中的視頻和轉發微博Live Photo中的視頻。特別注意,本設置只有在爬全部微博(原創+轉發),即filter值為0時生效,否則程序會跳過轉發微博的視頻下載。

設置cookie(可選)

cookie為可選參數,即可填可不填,具體區別見添加cookie與不添加cookie的區別。cookie默認配置如下:

"cookie": "your cookie"

如果想要設置cookie,可以按照如何獲取cookie中的方法,獲取cookie,并將上面的"your cookie"替換成真實的cookie即可。

設置mysql_config(可選)

mysql_config控制mysql參數配置。如果你不需要將結果信息寫入mysql,這個參數可以忽略,即刪除或保留都無所謂;如果你需要寫入mysql且config.json文件中mysql_config的配置與你的mysql配置不一樣,請將該值改成你自己mysql中的參數配置。

4.設置數據庫(可選)

本部分是可選部分,如果不需要將爬取信息寫入數據庫,可跳過這一步。本程序目前支持MySQL數據庫和MongoDB數據庫,如果你需要寫入其它數據庫,可以參考這兩個數據庫的寫法自己編寫。

MySQL數據庫寫入

要想將爬取信息寫入MySQL,請根據自己的系統環境安裝MySQL,然后命令行執行:

$ pip install pymysql

MongoDB數據庫寫入

要想將爬取信息寫入MongoDB,請根據自己的系統環境安裝MongoDB,然后命令行執行:

$ pip install pymongo

MySQL和MongDB數據庫的寫入內容一樣。程序首先會創建一個名為"weibo"的數據庫,然后再創建"user"表和"weibo"表,包含爬取的所有內容。爬取到的微博用戶信息或插入或更新,都會存儲到user表里;爬取到的微博信息或插入或更新,都會存儲到weibo表里,兩個表通過user_id關聯。如果想了解兩個表的具體字段,請點擊"詳情"。

詳情

user

id:微博用戶id,如"1669879400";

screen_name:微博用戶昵稱,如"Dear-迪麗熱巴";

gender:微博用戶性別,取值為f或m,分別代表女和男;

statuses_count:微博數;

followers_count:粉絲數;

follow_count:關注數;

description:微博簡介;

profile_url:微博主頁,如https://m.weibo.cn/u/1669879400?uid=1669879400&luicode=10000011&lfid=1005051669879400;

profile_image_url:微博頭像url;

avatar_hd:微博高清頭像url;

urank:微博等級;

mbrank:微博會員等級,普通用戶會員等級為0;

verified:微博是否認證,取值為true和false;

verified_type:微博認證類型,沒有認證值為-1,個人認證值為0,企業認證值為2,政府認證值為3,這些類型僅是個人猜測,應該不全,大家可以根據實際情況判斷;

verified_reason:微博認證信息,只有認證用戶擁有此屬性。


weibo

user_id:存儲微博用戶id,如"1669879400";

screen_name:存儲微博昵稱,如"Dear-迪麗熱巴";

id:存儲微博id;

text:存儲微博正文;

pics:存儲原創微博的原始圖片url。若某條微博有多張圖片,則存儲多個url,以英文逗號分割;若該微博沒有圖片,則值為’’;

video_url:存儲原創微博的視頻url和Live Photo中的視頻url。若某條微博有多個視頻,則存儲多個url,以英文分號分割;若該微博沒有視頻,則值為’’;

location:存儲微博的發布位置。若某條微博沒有位置信息,則值為’’;

created_at:存儲微博的發布時間;

source:存儲微博的發布工具;

attitudes_count:存儲微博獲得的點贊數;

comments_count:存儲微博獲得的評論數;

reposts_count:存儲微博獲得的轉發數;

topics:存儲微博話題,即兩個#中的內容。若某條微博沒有話題信息,則值為’’;

at_users:存儲微博@的用戶。若某條微博沒有@的用戶,則值為’’;

retweet_id:存儲轉發微博中原始微博的微博id。若某條微博為原創微博,則值為’’。

5.運行腳本

大家可以根據自己的運行環境選擇運行方式,Linux可以通過

$ python weibo.py

運行;

6.按需求修改腳本(可選)

本部分為可選部分,如果你不需要自己修改代碼或添加新功能,可以忽略此部分。

本程序所有代碼都位于weibo.py文件,程序主體是一個Weibo類,上述所有功能都是通過在main函數調用Weibo類實現的,默認的調用代碼如下:

        if not os.path.isfile('./config.json'):sys.exit(u'當前路徑:%s 不存在配置文件config.json' %(os.path.split(os.path.realpath(__file__))[0] + os.sep))with open('./config.json') as f:config = json.loads(f.read())wb = Weibo(config)wb.start()  # 爬取微博信息

用戶可以按照自己的需求調用或修改Weibo類。

通過執行本程序,我們可以得到很多信息:

wb.user:存儲目標微博用戶信息;

wb.user包含爬取到的微博用戶信息,如用戶id用戶昵稱性別微博數粉絲數關注數簡介主頁地址頭像url高清頭像url微博等級會員等級是否認證認證類型認證信息等,大家可以點擊"詳情"查看具體用法。

詳情

id:微博用戶id,取值方式為wb.user[‘id’],由一串數字組成;

screen_name:微博用戶昵稱,取值方式為wb.user[‘screen_name’];

gender:微博用戶性別,取值方式為wb.user[‘gender’],取值為f或m,分別代表女和男;

statuses_count:微博數,取值方式為wb.user[‘statuses_count’];

followers_count:微博粉絲數,取值方式為wb.user[‘followers_count’];

follow_count:微博關注數,取值方式為wb.user[‘follow_count’];

description:微博簡介,取值方式為wb.user[‘description’];

profile_url:微博主頁,取值方式為wb.user[‘profile_url’];

profile_image_url:微博頭像url,取值方式為wb.user[‘profile_image_url’];

avatar_hd:微博高清頭像url,取值方式為wb.user[‘avatar_hd’];

urank:微博等級,取值方式為wb.user[‘urank’];

mbrank:微博會員等級,取值方式為wb.user[‘mbrank’],普通用戶會員等級為0;

verified:微博是否認證,取值方式為wb.user[‘verified’],取值為true和false;

verified_type:微博認證類型,取值方式為wb.user[‘verified_type’],沒有認證值為-1,個人認證值為0,企業認證值為2,政府認證值為3,這些類型僅是個人猜測,應該不全,大家可以根據實際情況判斷;

verified_reason:微博認證信息,取值方式為wb.user[‘verified_reason’],只有認證用戶擁有此屬性。

wb.weibo:存儲爬取到的所有微博信息;

wb.weibo包含爬取到的所有微博信息,如微博id正文原始圖片url視頻url位置日期發布工具點贊數轉發數評論數話題@用戶等。如果爬的是全部微博(原創+轉發),除上述信息之外,還包含原始用戶id原始用戶昵稱原始微博id原始微博正文原始微博原始圖片url原始微博位置原始微博日期原始微博工具原始微博點贊數原始微博評論數原始微博轉發數原始微博話題原始微博@用戶等信息。wb.weibo是一個列表,包含了爬取的所有微博信息。wb.weibo[0]為爬取的第一條微博,wb.weibo[1]為爬取的第二條微博,以此類推。當filter=1時,wb.weibo[0]為爬取的第一條原創微博,以此類推。wb.weibo[0][‘id’]為第一條微博的id,wb.weibo[0][‘text’]為第一條微博的正文,wb.weibo[0][‘created_at’]為第一條微博的發布時間,還有其它很多信息不在贅述,大家可以點擊下面的"詳情"查看具體用法。

詳情

user_id:存儲微博用戶id。如wb.weibo[0][‘user_id’]為最新一條微博的用戶id;

screen_name:存儲微博昵稱。如wb.weibo[0][‘screen_name’]為最新一條微博的昵稱;

id:存儲微博id。如wb.weibo[0][‘id’]為最新一條微博的id;

text:存儲微博正文。如wb.weibo[0][‘text’]為最新一條微博的正文;

pics:存儲原創微博的原始圖片url。如wb.weibo[0][‘pics’]為最新一條微博的原始圖片url,若該條微博有多張圖片,則存儲多個url,以英文逗號分割;若該微博沒有圖片,則值為’’;

video_url:存儲原創微博的視頻url和原創微博Live Photo中的視頻url。如wb.weibo[0][‘video_url’]為最新一條微博的視頻url,若該條微博有多個視頻,則存儲多個url,以英文分號分割;若該微博沒有視頻,則值為’’;

location:存儲微博的發布位置。如wb.weibo[0][‘location’]為最新一條微博的發布位置,若該條微博沒有位置信息,則值為’’;

created_at:存儲微博的發布時間。如wb.weibo[0][‘created_at’]為最新一條微博的發布時間;

source:存儲微博的發布工具。如wb.weibo[0][‘source’]為最新一條微博的發布工具;

attitudes_count:存儲微博獲得的點贊數。如wb.weibo[0][‘attitudes_count’]為最新一條微博獲得的點贊數;

comments_count:存儲微博獲得的評論數。如wb.weibo[0][‘comments_count’]為最新一條微博獲得的評論數;

reposts_count:存儲微博獲得的轉發數。如wb.weibo[0][‘reposts_count’]為最新一條微博獲得的轉發數;

topics:存儲微博話題,即兩個#中的內容。如wb.weibo[0][‘topics’]為最新一條微博的話題,若該條微博沒有話題信息,則值為’’;

at_users:存儲微博@的用戶。如wb.weibo[0][‘at_users’]為最新一條微博@的用戶,若該條微博沒有@的用戶,則值為’’;

retweet:存儲轉發微博中原始微博的全部信息。假如wb.weibo[0]為轉發微博,則wb.weibo[0][‘retweet’]為該轉發微博的原始微博,它存儲的屬性與wb.weibo[0]一樣,只是沒有retweet屬性;若該條微博為原創微博,則wb[0]沒有"retweet"屬性,大家可以點擊"詳情"查看具體用法。

詳情

假設爬取到的第i條微博為轉發微博,則它存在以下信息:

user_id:存儲原始微博用戶id。wb.weibo[i-1][‘retweet’][‘user_id’]為該原始微博的用戶id;

screen_name:存儲原始微博昵稱。wb.weibo[i-1][‘retweet’][‘screen_name’]為該原始微博的昵稱;

id:存儲原始微博id。wb.weibo[i-1][‘retweet’][‘id’]為該原始微博的id;

text:存儲原始微博正文。wb.weibo[i-1][‘retweet’][‘text’]為該原始微博的正文;

pics:存儲原始微博的原始圖片url。wb.weibo[i-1][‘retweet’][‘pics’]為該原始微博的原始圖片url,若該原始微博有多張圖片,則存儲多個url,以英文逗號分割;若該原始微博沒有圖片,則值為’’;

video_url:存儲原始微博的視頻url和原始微博Live Photo中的視頻url。如wb.weibo[i-1][‘retweet’][‘video_url’]為該原始微博的視頻url,若該原始微博有多個視頻,則存儲多個url,以英文分號分割;若該微博沒有視頻,則值為’’;

location:存儲原始微博的發布位置。wb.weibo[i-1][‘retweet’][‘location’]為該原始微博的發布位置,若該原始微博沒有位置信息,則值為’’;

created_at:存儲原始微博的發布時間。wb.weibo[i-1][‘retweet’][‘created_at’]為該原始微博的發布時間;

source:存儲原始微博的發布工具。wb.weibo[i-1][‘retweet’][‘source’]為該原始微博的發布工具;

attitudes_count:存儲原始微博獲得的點贊數。wb.weibo[i-1][‘retweet’][‘attitudes_count’]為該原始微博獲得的點贊數;

comments_count:存儲原始微博獲得的評論數。wb.weibo[i-1][‘retweet’][‘comments_count’]為該原始微博獲得的評論數;

reposts_count:存儲原始微博獲得的轉發數。wb.weibo[i-1][‘retweet’][‘reposts_count’]為該原始微博獲得的轉發數;

topics:存儲原始微博話題,即兩個#中的內容。wb.weibo[i-1][‘retweet’][‘topics’]為該原始微博的話題,若該原始微博沒有話題信息,則值為’’;

at_users:存儲原始微博@的用戶。wb.weibo[i-1][‘retweet’][‘at_users’]為該原始微博@的用戶,若該原始微博沒有@的用戶,則值為’’。

如何獲取user_id

1.打開網址https://weibo.cn,搜索我們要找的人,如"迪麗熱巴",進入她的主頁;


2.按照上圖箭頭所指,點擊"資料"鏈接,跳轉到用戶資料頁面;


如上圖所示,迪麗熱巴微博資料頁的地址為"https://weibo.cn/1669879400/info",其中的"1669879400"即為此微博的user_id。

事實上,此微博的user_id也包含在用戶主頁(https://weibo.cn/u/1669879400?f=search_0)中,之所以我們還要點擊主頁中的"資料"來獲取user_id,是因為很多用戶的主頁不是"https://weibo.cn/user_id?f=search_0"的形式,而是"https://weibo.cn/個性域名?f=search_0"或"https://weibo.cn/微號?f=search_0"的形式。其中"微號"和user_id都是一串數字,如果僅僅通過主頁地址提取user_id,很容易將"微號"誤認為user_id。

添加cookie與不添加cookie的區別(可選)

對于大部分微博用戶,不添加cookie也可以獲取其用戶信息和大部分微博,不同的微博獲取比例不同。以2020年1月2日迪麗熱巴的微博為例,此時她共有1085條微博,在不添加cookie的情況下,可以獲取到1026條微博,大約占全部微博的94.56%,而在添加cookie后,可以獲取全部微博。其他用戶類似,大部分都可以在不添加cookie的情況下獲取到90%以上的微博,在添加cookie后可以獲取全部微博。具體原因是,大部分微博內容都可以在移動版匿名獲取,少量微博需要用戶登錄才可以獲取,所以這部分微博在不添加cookie時是無法獲取的。
有少部分微博用戶,不添加cookie可以獲取其微博,無法獲取其用戶信息。對于這種情況,要想獲取其用戶信息,是需要cookie的。

如何獲取cookie(可選)

1.用Chrome打開https://passport.weibo.cn/signin/login;

2.輸入微博的用戶名、密碼,登錄,如圖所示:

登錄成功后會跳轉到https://m.weibo.cn;

3.按F12鍵打開Chrome開發者工具,在地址欄輸入并跳轉到https://weibo.cn,跳轉后會顯示如下類似界面:

4.依此點擊Chrome開發者工具中的Network->Name中的weibo.cn->Headers->Request Headers,"Cookie:"后的值即為我們要找的cookie值,復制即可,如圖所示:

如何檢測cookie是否有效(可選)

因為對于大部分微博用戶,本程序添不添加cookie,cookie正確與否都可以運行并獲取微博信息,所以使用者很難通過觀察檢測cookie是否有效。目前有兩種方式檢測cookie值是否有效,大家從下面兩種方法中選擇一種就可以:

1.爬取特定用戶,將user_id設置為2218081121,即

"user_id_list": ["2218081121"],

運行程序,如果程序提示cookie無效等類似信息,說明cookie無效,否則cookie是有效的;

2.將獲取的cookie填到cookie版的config.json中,運行程序。如果程序提示cookie無效等相關信息,說明cookie無效,否則cookie是有效的。因為cookie版中cookie為必需項,且cookie版與免cookie版的cookie通用
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455961.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455961.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455961.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

“云計算”越來越重要 但更重要的是“云安全”

據Gartner公司的預測,云安全服務業務繼續保持強勁,2017年最終將達到59億美元的規模,比2016年上漲了21%。 云安全服務市場的增長速度將超過整體信息安全市場。Gartner表示,電子郵件的安全性,網絡安全和身份識…

HTML中Head頭

HTML中Head頭 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>網頁標題</title> </head> <body>網頁顯示內容 </body> </html>HEAD標簽里面負責對網頁進行一些設置以及…

H.264的兩個概念:DC系數和AC系數。 MV預測過程詳解(附圖)

在做熵編碼之前&#xff0c;先明確兩個概念&#xff1a;DC系數和AC系數。 量化后得到的仍是64個系數&#xff0c;量化并沒有改變系數的性質。大家知到DCT變換是將數據域從時&#xff08;空&#xff09;域變換到頻域&#xff0c;在頻域平面上變換系數是二維頻域變量u和v的函數。…

1028. List Sorting (25)

題目鏈接&#xff1a;http://www.patest.cn/contests/pat-a-practise/1028 題目&#xff1a; 1028. List Sorting (25) 時間限制200 ms內存限制65536 kB代碼長度限制16000 B判題程序Standard作者CHEN, YueExcel can sort records according to any column. Now you are suppose…

【后端開發】分析抖音后臺架構

最后分享抖音美女爬蟲 https://github.com/wangshub/Douyin-Bot

看日本如何用IoT打造智能工廠

在技術、市場、政策等方面因素的推動下&#xff0c;全球正在掀起一股智能制造的熱潮&#xff0c;越來越多的國家大力推進智能工廠的建設。有機構預測&#xff0c;未來五年智能工廠領域的投資將促進生產力增長27%&#xff0c;預計到2022年年底&#xff0c;21%的工廠將會成為智能…

HTML標題

HTML標題 通過 <h1>、<h2>、<h3>、<h4>、<h5>、<h6>,標簽可以在網頁上定義6種級別的標題。 6種級別的標題表示文檔的6級目錄層級關系&#xff0c;比如說&#xff1a; <h1>用作主標題&#xff08;最重要的&#xff09;&#xff0c;其…

264中 POC的計算方法

作者&#xff1a;jogh.264 參考代碼 JM86 一參數說明 這一節闡述的是encoder.cfg 中的參數對編碼過程的影響 要注意的是encoder.cfg 中的參數跟input 結構體中的變量是一一對應的 ? StartFrame&#xff1a;從視頻流的第幾幀開始編碼 ? FramesToBeEncoded&#xff1a;指明…

c++ 測試串口速率_納米軟件案例之電流控制測試系統

項目背景西安某機電研究所電流控制測試系統軟件需要用記錄儀設置采樣速率對電流數據進行采集&#xff0c;并能夠進行數據實時顯示、保存。為更好的分析實驗現象&#xff0c;需要歷史測試數據可查詢并顯示。目前采用的傳統的手動測試&#xff0c;測試操作繁雜。數據保存困難&…

【Sublime】使用 Sublime 工具時運行python文件

使用 Sublime 工具時報Decode error - output not utf-8解決辦法 在菜單中tools中第四項編譯系統 內最后一項增添新的編譯系統 自動新建 Python.sublime-build文件,并添加"encoding":"cp936"這一行,保存即可 使用python2 則注釋encoding改為utf-8 {&quo…

智慧城市這份試卷 國外城市怎么答題?

在近五年&#xff0c;國內智慧城市建設的熱潮一直增無減。據媒體梳理&#xff0c;透過各地政府工作報告和“十三五”規劃發現&#xff0c;我國95%的副省級城市、76%的地級城市&#xff0c;總計超過500個城市&#xff0c;均在政府工作報告或“十三五”規劃中明確提出&#xff0c…

HTML段落,換行,字符實體

HTML段落,換行,字符實體 html段落 <p>標簽定義一個文本段落&#xff0c;一個段落含有默認的上下間距&#xff0c;段落之間會用這種默認間距隔開&#xff0c;代碼如下&#xff1a; <!DOCTYPE html> <html> <head><meta charset"UTF-8"&g…

【python】有意思的python小項目GitHub地址匯總

Licence_plate_recognize 車牌識別 Djang-Stu 基于python的Django框架學生信息管理系統 sklearn-machine-learning 數據分析-機器學習-深度學習【個人學習筆記】 movie_analysis 對電影影評分析生成詞云 spider_doubanTOP 爬取豆瓣電影top250/爬取豆瓣圖書top250 yuyin_re…

CBP詳解

cbp一共6bit&#xff0c;高2bit表示cbpc(2&#xff1a;cb、cr中至少一個4x4塊的AC系數不全為0&#xff1b;1&#xff1a;cb、cr中至少一個2x2的DC系數不全為0&#xff1b;0&#xff1a;所有色度系數全0&#xff09; 低4bit分別表示4個8x8亮度塊&#xff0c;其中從最低一位開始的…

R 包的安裝,使用,更新

R包的使用方法 包就是提供了種類繁多的函數&#xff0c;當然還有它的一些數據集&#xff0c;可以使用這些函數來操作這些數據集&#xff0c;來學習使用。 library()&#xff0c;當前的工作環境里&#xff0c;可以使用的包 包的幫助文檔&#xff1a;help(package"包名"…

nginx 電子書_13本免費的電子書,拿走,不謝

傻白甜程序員13本電子書的清單01《PyTorch官方教程中文版》傻白甜程序員中&#xff0c;后臺回復“pytorch”獲取02《Think Python》傻白甜程序員中&#xff0c;后臺回復“ThinkPython”獲取03《走向分布式》傻白甜程序員中&#xff0c;后臺回復“分布式”獲取04《Nginx教程&…

Redis數據類型:字符串

2019獨角獸企業重金招聘Python工程師標準>>> 概要 字符串類型是Redis最基本的數據類型&#xff0c;能夠存儲任何形式的字符串&#xff0c;單個健值最大能夠存放512兆的數據&#xff0c;據傳將來會放開512M的限制。 命令 設置值&#xff1a;set foo bar 獲取值&#…

HTML塊,含樣式的標簽

HTML塊,含樣式的標簽 html塊 div標簽 塊元素&#xff0c;表示一塊內容&#xff0c;沒有具體的語義。span標簽 行內元素&#xff0c;表示一行中的一小段內容&#xff0c;沒有具體的語義。 含樣式和語義的標簽 em標簽 行內元素&#xff0c;表示語氣中的強調詞i標簽 行內元素…

【docker】docker虛擬容器的使用大全

Docker容器詳解 Docker是基于Go語言開發的開源應用容器引擎&#xff0c;遵從Apache Licence 2.0協議&#xff0c;可以讓開發者打包應用以及應用的依賴包到一個可移植的容器中&#xff0c;然后發布到各種發行版本的Linux系統上。 Docker簡介 軟件開發中最為麻煩的事情可能就是…

【樹莓派】修改樹莓派盒子MAC地址

用樹莓派盒子&#xff0c;在某些客戶方實施過程中&#xff0c;不同客戶的網絡環境對樹莓派盒子的要求不同&#xff0c;網絡管理配置要求MAC地址和IP綁定。 一種情況下&#xff0c;查詢盒子的MAC地址&#xff0c;添加到網絡管理的路由規則中即可&#xff1b; 另一種情況下&#…