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