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