分布式爬蟲爬取知乎用戶—頁面分析篇

使用python3爬取知乎用戶信息并分析

參考了囈語 ? 如何寫一個簡單的分布式知乎爬蟲?打算自己做一個python3的分布式爬蟲

想要抓取數(shù)據(jù)第献,首先分析用戶信息頁面的構(gòu)成望几,以輪子哥為例


紅框里的便我們要抓取的用戶關(guān)鍵信息(的一部分)缰趋。

最上面是我們的目標(biāo)URL:https://www.zhihu.com/people/excited-vczh/answers。

觀察一下這個URL的組成:

http://www.zhihu.com + /people + /excited-vczh + /answer

可以發(fā)現(xiàn)只有 excited-vczh 這部分是會變化的,它代表著知乎用戶的唯一ID按脚,在知乎的數(shù)據(jù)格式中泵督,它的鍵名叫做 urlToken

所以我們可以用拼接字符串的形式哥倔,得到我們待抓取頁面的URL:

url='%s/people/%s/answers'%(host,urlToken)

頁面URL有了秸架,而且從上圖我們可以發(fā)現(xiàn) 不登錄 也可以訪問用戶主頁,這說明我們可以不用考慮模擬登陸的問題咆蒿,可以自由的獲取用戶主頁面源碼东抹。

那么我們?nèi)绾螐挠脩糁黜摰脑创a中獲取用戶的數(shù)據(jù)呢蚂子?一開始我以為需要挨個匹配頁面中對應(yīng)的部分,但我查看源碼的時候發(fā)現(xiàn)知乎把用戶數(shù)據(jù)集集中放到了源碼的一個地方缭黔,那就是 id="data" 的 div 的 data-state 屬性的值中食茎,看下圖:


從上圖我們可以發(fā)現(xiàn),date-state 的屬性值中藏有用戶的信息馏谨,比如我們可以依次找到用戶的教育經(jīng)歷(educations)别渔、簡介(headline)、參與的 Live 數(shù)量(participatedLiveCount)惧互、關(guān)注的收藏夾數(shù)量(followingFavlistsCount)哎媚、被收藏的次數(shù)(favoritedCount)、關(guān)注他的用戶數(shù)(followerCount)喊儡、關(guān)注的話題數(shù)量(followingTopicCount)抄伍、用戶描述(description)等信息。通過觀察我們也可以發(fā)現(xiàn)管宵,數(shù)據(jù)應(yīng)該是以 JSON 格式存儲截珍。

知道了用戶數(shù)據(jù)都藏在 date-state 中,我們 用 lxml

把該屬性的值取出來箩朴,然后作為 JSON 格式讀取岗喉,再把數(shù)據(jù)集中存儲用戶數(shù)據(jù)的部分提取出來即可,看代碼:


html = etree.HTML(request.text)

result = html.xpath("http://div[@id='data']/@data-state")

result = json.loads(result[0])

print(result['entities']['users'][urlToken])


選擇抓取用戶的關(guān)注者(follower)列表炸庞,我們可以根據(jù)知乎的api來抓取用戶的關(guān)注者列表

關(guān)注者列表api:? https://www.zhihu.com/api/v4/members/excited-vczh/followers?include=data%5B*%5D.answer_count%2Carticles_count%2Cgender%2Cfollower_count%2Cis_followed%2Cis_following%2Cbadge%5B%3F(type%3Dbest_answerer)%5D.topics&offset='+str(offset)+'&limit=20'

關(guān)注列表api:? https://www.zhihu.com/api/v4/members/excited-vczh/followees?include=data%5B*%5D.answer_count%2Carticles_count%2Cgender%2Cfollower_count%2Cis_followed%2Cis_following%2Cbadge%5B%3F(type%3Dbest_answerer)%5D.topics&offset='+str(offset)+'&limit=20'

每頁默認(rèn)顯示20個用戶

代碼如下:

def getFollowers(self,offset):

getFolloweesUrl ='https://www.zhihu.com/api/v4/members/excited-vczh/followers?include=data%5B*%5D.answer_count%2Carticles_count%2Cgender%2Cfollower_count%2Cis_followed%2Cis_following%2Cbadge%5B%3F(type%3Dbest_answerer)%5D.topics&offset='+str(offset)+'&limit=20'

req =self.session.get(url=getFolloweesUrl,headers=headers)

hjson = json.loads(req.text)

flag = hjson['paging']['is_end']? #is_end為true結(jié)束

for i in range(0,20):

print(hjson['data'][i]['url_token']) #打印用戶url_token

offsetFlag= offsetFlag+20? #下一頁


注意:使用api獲取關(guān)注者或關(guān)注列表必須登陸钱床,不登陸會報錯誤代碼

關(guān)于登錄請查看我的GitHub

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市埠居,隨后出現(xiàn)的幾起案子查牌,更是在濱河造成了極大的恐慌,老刑警劉巖滥壕,帶你破解...
    沈念sama閱讀 212,599評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纸颜,死亡現(xiàn)場離奇詭異,居然都是意外死亡绎橘,警方通過查閱死者的電腦和手機胁孙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來称鳞,“玉大人涮较,你說我怎么就攤上這事「灾梗” “怎么了狂票?”我有些...
    開封第一講書人閱讀 158,084評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長熙暴。 經(jīng)常有香客問我闺属,道長毛肋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,708評論 1 284
  • 正文 為了忘掉前任屋剑,我火速辦了婚禮,結(jié)果婚禮上诗眨,老公的妹妹穿的比我還像新娘唉匾。我一直安慰自己,他們只是感情好匠楚,可當(dāng)我...
    茶點故事閱讀 65,813評論 6 386
  • 文/花漫 我一把揭開白布巍膘。 她就那樣靜靜地躺著,像睡著了一般芋簿。 火紅的嫁衣襯著肌膚如雪峡懈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,021評論 1 291
  • 那天与斤,我揣著相機與錄音肪康,去河邊找鬼。 笑死撩穿,一個胖子當(dāng)著我的面吹牛磷支,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播食寡,決...
    沈念sama閱讀 39,120評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼雾狈,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了抵皱?” 一聲冷哼從身側(cè)響起善榛,我...
    開封第一講書人閱讀 37,866評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎呻畸,沒想到半個月后移盆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,308評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡伤为,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,633評論 2 327
  • 正文 我和宋清朗相戀三年味滞,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钮呀。...
    茶點故事閱讀 38,768評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡剑鞍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出爽醋,到底是詐尸還是另有隱情蚁署,我是刑警寧澤,帶...
    沈念sama閱讀 34,461評論 4 333
  • 正文 年R本政府宣布蚂四,位于F島的核電站光戈,受9級特大地震影響哪痰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜久妆,卻給世界環(huán)境...
    茶點故事閱讀 40,094評論 3 317
  • 文/蒙蒙 一晌杰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧筷弦,春花似錦肋演、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至奸绷,卻和暖如春梗夸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背号醉。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評論 1 267
  • 我被黑心中介騙來泰國打工反症, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人畔派。 一個月前我還...
    沈念sama閱讀 46,571評論 2 362
  • 正文 我出身青樓惰帽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親父虑。 傳聞我的和親對象是個殘疾皇子该酗,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,666評論 2 350

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)士嚎,斷路器呜魄,智...
    卡卡羅2017閱讀 134,637評論 18 139
  • 前言 很早就有采集知乎用戶數(shù)據(jù)的想法爵嗅,要實現(xiàn)這個想法,需要寫一個網(wǎng)絡(luò)爬蟲(Web Spider)笨蚁。因為在學(xué)習(xí) py...
    囈語_yiyu閱讀 6,719評論 12 148
  • Scrapy睹晒,Python開發(fā)的一個快速,高層次的屏幕抓取和web抓取框架,用于抓取web站點并從頁面中提取結(jié)構(gòu)化...
    Evtion閱讀 5,839評論 12 18
  • 目標(biāo) 爬取知乎用戶信息括细,并作簡要分析伪很。所爬的對象是關(guān)注者≥10的用戶,因為: 關(guān)注者數(shù)量<10的用戶奋单,很多的僵尸用...
    被稱為L的男人閱讀 4,642評論 8 20
  • 今天周五锉试,下午是寶寶幼兒園的周末小舞臺,做完本周工作一陣小跑览濒,總算緊趕慢趕趕在寶寶班級表演前到達呆盖,站在舞臺下拖云,寶寶...
    昵稱已被占用了閱讀 133評論 0 0