python獲取指定微博使用者的關注列表

2022-03-27 12:32:23 字數 3395 閱讀 3597

首先,看看sdk中獲取關注列表的函式:

statuses/friends

獲取使用者關注列表及每個關注使用者的最新一條微博,返回結果按關注時間倒序排列,最新關注的使用者排在最前面。

必選型別及範圍

說明source

true

string

:idfalse

int64/string

使用者id(int64)或者暱稱(string)。該引數為乙個rest風格引數。呼叫示例見注意事項

user_id

false

int64

使用者id,主要是用來區分使用者id跟微博暱稱。當微博暱稱為數字導致和使用者id產生歧義,特別是當微博暱稱和使用者id一樣的時候,建議使用該引數

screen_name

false

string

微博暱稱,主要是用來區分使用者uid跟微博暱稱,當二者一樣而產生歧義的時候,建議使用該引數

cursor

false

intcount

false

int,預設20,最大200

每頁返回的最大記錄數,最大不能超過200,預設為20。

:id, user_id, screen_name 可以任選乙個引數,在3個都不提供的情況下,系統返回當前登入使用者的關注列表

從weibopy\api.py下,可獲取friends函式的原型:api.friends('id', 'user_id', 'screen_name', 'page', 'cursor')

經過試驗,前三個引數只要有乙個就可以。現在,修改下例子中的**examples\getfriends.py:

**一:

view code

deffriends(self,nickname):

total_friends =0

next_cursor =-

1while

next_cursor

!=0:

timeline

=self.api.friends(nickname,'',

'','',next_cursor)

#timeline = self.api.friends()

ifisinstance(timeline, tuple):

next_cursor

=timeline[1]

total_friends

+=len(timeline[0])

forline

intimeline[0]:

self.obj

=line

fid

=self.getatt("id

")name

=self.getatt(

"screen_name")

text ="

friends---"+

str(fid) +"

:"+name

text

=text.encode(

"gbk")

print

text

else

:next_cursor =0

total_friends

+=len(timeline)

forline

intimeline:

self.obj

=line

fid

=self.getatt("id

")name

=self.getatt(

"screen_name")

text ="

friends---"+

str(fid) +"

:"+name

text

=text.encode(

"gbk")

print

text

問題出來了,文件裡說返回結果中會有next_cursor欄位,但是除錯發現timeline的型別不是tuple,而是。這是怎麼回事?

重新除錯,在

timeline 

=self.api.friends(nickname,'',

'','',next_cursor)

處步入,來到如下位置(weibopy\binder.py):

def

_call(api,

*args,

**kargs):

method

=apimethod(api, args, kargs)

return

method.execute()

進入method.execute(),單步執行來到以下**行(weibopy\binder.py):

#

parse the response payload

result

=self.api.parser.parse(self, body)

再次步入,可發現如下**(weibopy\parsers.py):

ifisinstance(json, tuple):

json, cursors

=json

else

:cursors

=none

ifmethod.payload_list:

result

=model.parse_list(method.api, json)

else

:result

=model.parse(method.api, json)

ifcursors:

return

result, cursors

else

:return

result

此時,json的型別不是tuple而是dict,因此,cursors被置為none,因此最後返回的結果中沒有cursors,只有關注列表。這導致函式friend中的迴圈只執行了一次。知道原因就好辦了:

ifisinstance(json, tuple):

json, cursors

=json

elif

isinstance(json, dict):if'

next_cursor'in

json:

cursors

=json[

'next_cursor']

else

:cursors

=none

else

:cursors

=none

重新執行**一可獲得使用者的全部關注列表。

爬取微博指定使用者的微博內容

使用python3爬取微博指定使用者的內容 import urllib.request import json 定義要爬取的微博大v的微博id id 5866810652 設定 ip proxy addr 192.168.1.101 定義頁面開啟函式 獲取微博主頁的containerid,爬取微博內...

微博爬蟲python 微博爬蟲 python

本文爬取的是m站的微博內容,基於python 2.7 一 微博內容爬取 1.要爬取的微博首頁 2.手機微博是看不到翻頁,是一直往下載入的,但是其json格式的資料仍然以翻頁的形式呈現。3.開啟開發者工具,向下翻頁面,可以在network下的xhr的響應檔案中,找到json檔案的 如 通過分析發現每個...

微博 使用者畫像 微博的使用者畫像是怎樣構建的

1.概述 從使用者模型維度的劃分可以看出,屬性和興趣維度的使用者模型都可以歸入使用者畫像 user profile 的範疇。所謂使用者畫像,簡單來說就是對使用者的資訊進行標籤化。如圖1所示。一方面,標籤化是對使用者資訊進行結構化,方便計算機的識別和處理 另一方面,標籤本身也具有準確性和非二義性,也有...