摘要:所以就試著用爬取了知識(shí)星球的內(nèi)容。這個(gè)過(guò)程又學(xué)習(xí)了一些新的知識(shí),已經(jīng)在代碼中以批注的形式寫(xiě)出。只不過(guò)在網(wǎng)頁(yè)中用到了的轉(zhuǎn)化,這部分是新學(xué)習(xí)的知識(shí)。
去年我們做過(guò)一個(gè)叫「學(xué)長(zhǎng)問(wèn)答」的社群活動(dòng),里面沉淀了大量有價(jià)值的互動(dòng)信息,后來(lái)因?yàn)楦鞣N原因終止了。今天和涂騰聊起來(lái),覺(jué)得這些信息就這么沉寂了太浪費(fèi)。所以就試著用python爬取了知識(shí)星球的內(nèi)容。
這個(gè)過(guò)程又學(xué)習(xí)了一些新的知識(shí),已經(jīng)在代碼中以批注的形式寫(xiě)出。但還有一個(gè)沒(méi)有解決的問(wèn)題,就是一個(gè)提問(wèn)底下可以跟好幾個(gè)評(píng)論,我暫時(shí)還不能在輸出結(jié)果里將「一個(gè)提問(wèn)+n個(gè)評(píng)論」以整體的形式給出,而只能把評(píng)論的信息以一個(gè)字典的形式展現(xiàn),這算是沒(méi)有爬取的太徹底。將來(lái)再看看有沒(méi)有新的解決方法。
import requests import json import urllib import csv #頭信息。網(wǎng)站只提供掃碼登陸的方式,沒(méi)有賬號(hào)密碼。我以為應(yīng)該比較麻煩,但在header信息里找到了Authorization信息之后,直接可以保持登陸狀態(tài)了。 # 令一個(gè)標(biāo)志是直接在瀏覽器里訪問(wèn)內(nèi)頁(yè)網(wǎng)址的話,瀏覽器的報(bào)錯(cuò)是“{"succeeded":false,"code":401,"info":"","resp_data":{}}”,這個(gè)很像原來(lái)node.js的數(shù)據(jù)中心沒(méi)有登陸的報(bào)錯(cuò),而數(shù)據(jù)中心的模擬登陸也是通過(guò)在header中添加Authorization來(lái)實(shí)現(xiàn)的。 headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36", "Referer": "https://wx.zsxq.com/dweb/", "Authorization": "51EC09CA-6BCC-8847-4419-FA04A2FC9E00" } #打開(kāi)并寫(xiě)入csv文件 f = open("/Users/damo/Desktop/wendatuan.csv", "w+") writer = csv.writer(f) writer.writerow(["created_time","ask_name","ask_content","comment"]) #定義爬取信息的函數(shù)主體 def get_info(url): res = requests.get(url,headers = headers) json_data = json.loads(res.text) datas = json_data["resp_data"]["topics"] for data in datas: if "talk" in data.keys(): # 判斷json中是否包含 talk 這個(gè)鍵 ask_name = data["talk"]["owner"]["name"] ask_content = data["talk"]["text"] else: ask_name = "" ask_content = "" if "show_comments" in data.keys(): comment = data["show_comments"] else: comment = "" created_time = data["create_time"] writer.writerow([created_time,ask_name,ask_content,comment]) # 截止到前面的代碼,已經(jīng)可以實(shí)現(xiàn)一個(gè)頁(yè)面的爬取。下面的代碼內(nèi)容主要任務(wù)是實(shí)現(xiàn)“如何自動(dòng)實(shí)現(xiàn)多頁(yè)面爬取” # 多頁(yè)面的爬取是通過(guò)Network中Query String Parameters來(lái)實(shí)現(xiàn)的:這里提供兩個(gè)參數(shù),觀察之后發(fā)現(xiàn)count是固定值,而end_time和網(wǎng)址最后的時(shí)間是一樣的。 # 只不過(guò)在網(wǎng)頁(yè)中用到了 urlencode的轉(zhuǎn)化,這部分是新學(xué)習(xí)的知識(shí)。 # 在這個(gè)爬蟲(chóng)案例中,網(wǎng)頁(yè)構(gòu)造的核心邏輯是“上一組最后一個(gè)數(shù)據(jù)的創(chuàng)建時(shí)間剛好是下一組數(shù)據(jù)訪問(wèn)網(wǎng)址中的一個(gè)參數(shù)”,以此來(lái)構(gòu)造循環(huán)抓取的網(wǎng)址 end_time = datas[19]["create_time"] url_encode = urllib.parse.quote(end_time) # urlencode,將網(wǎng)址中的文本轉(zhuǎn)化 next_url = "https://api.zsxq.com/v1.10/groups/518282858584/topics?count=20&end_time="+url_encode # 通過(guò)觀察構(gòu)造下一組數(shù)據(jù)的網(wǎng)址 get_info(next_url) # 這里比較巧,直接在函數(shù)內(nèi)部再次調(diào)用函數(shù),從而實(shí)現(xiàn)不斷的自循環(huán) if __name__ == "__main__": url = "https://api.zsxq.com/v1.10/groups/518282858584/topics?count=20" get_info(url)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/44965.html
摘要:為啥你天天刷抖音一點(diǎn)都不煩,因?yàn)槟阌X(jué)得視頻好看你有興趣啊。比如我們說(shuō)你玩是不是要開(kāi)始搭建一個(gè)自己的網(wǎng)站,是不是可以自己寫(xiě)一個(gè)小的腳本來(lái)自動(dòng)發(fā)消息給你的女朋友等等,通過(guò)這樣的小例子來(lái)慢慢的培養(yǎng)自己的學(xué)習(xí)的興趣。學(xué)習(xí),切勿貪快貪多。 大家好,我是菜鳥(niǎo)哥! 周末啦,跟大家聊一下我們粉絲團(tuán)的情況...
摘要:最寒冷,面試跳槽不能等馬上就月份了,所謂的金三銀四招聘季。在中有兩種模式,分別是線程池和信號(hào)量,說(shuō)到這里大家明白了吧,信號(hào)量的作用。感興趣的同學(xué)可以去了解下,講了線程,線程池,鎖,,等內(nèi)容。 2019最寒冷,面試跳槽不能等 馬上就3月份了,所謂的金三銀四招聘季。2019年也許是互聯(lián)網(wǎng)最冷清的一年,很多知名的大型互聯(lián)網(wǎng)公司都裁員過(guò)冬。當(dāng)然也有一些公司還在持續(xù)招人的,比如阿里就宣稱(chēng)不裁員,...
摘要:且本小白也親身經(jīng)歷了整個(gè)從小白到爬蟲(chóng)初入門(mén)的過(guò)程,因此就斗膽在上開(kāi)一個(gè)欄目,以我的圖片爬蟲(chóng)全實(shí)現(xiàn)過(guò)程為例,以期用更簡(jiǎn)單清晰詳盡的方式來(lái)幫助更多小白應(yīng)對(duì)更大多數(shù)的爬蟲(chóng)實(shí)際問(wèn)題。 前言: 一個(gè)月前,博主在學(xué)過(guò)python(一年前)、會(huì)一點(diǎn)網(wǎng)絡(luò)(能按F12)的情況下,憑著熱血和興趣,開(kāi)始了pyth...
摘要:列入全國(guó)計(jì)算機(jī)二級(jí)取代,部分城市試點(diǎn),引入高中。建議通過(guò)視頻學(xué)習(xí),這樣不但節(jié)省時(shí)間,而且效果很好。能否回憶起那個(gè)陡峭的學(xué)習(xí)曲線問(wèn)題越多,學(xué)的越快。出報(bào)告每完成一個(gè)項(xiàng)目,總結(jié)報(bào)告,必不可少。結(jié)構(gòu)化學(xué)習(xí),才是你我需要真正培養(yǎng)的能力。 編程就如同你學(xué)習(xí)開(kāi)車(chē),即使,你可以一口氣,說(shuō)出一輛車(chē)的全部零部件,以及內(nèi)燃機(jī)進(jìn)氣、壓縮、做功和排氣過(guò)程,但你就是不去練如何開(kāi)車(chē),怎么上路。你確定,你敢開(kāi)嗎?你...
摘要:時(shí)間永遠(yuǎn)都過(guò)得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過(guò)去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...
閱讀 3396·2023-04-25 14:07
閱讀 3466·2021-09-28 09:35
閱讀 2097·2019-08-30 15:55
閱讀 1412·2019-08-30 13:48
閱讀 2505·2019-08-30 13:16
閱讀 3206·2019-08-30 12:54
閱讀 3241·2019-08-30 11:19
閱讀 1881·2019-08-29 17:17