成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

用python爬取知識(shí)星球

tinylcy / 3417人閱讀

摘要:所以就試著用爬取了知識(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

相關(guān)文章

  • 學(xué)習(xí)Python想放棄,因?yàn)槟銢](méi)有培養(yǎng)自己的興趣!

    摘要:為啥你天天刷抖音一點(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)的情況...

    ideaa 評(píng)論0 收藏0
  • 面試:Semaphore(信號(hào)量)的成長(zhǎng)之路

    摘要:最寒冷,面試跳槽不能等馬上就月份了,所謂的金三銀四招聘季。在中有兩種模式,分別是線程池和信號(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)不裁員,...

    Lorry_Lu 評(píng)論0 收藏0
  • 【小白+python+selenium庫(kù)+圖片爬取+反爬+資料】超詳細(xì)新手實(shí)現(xiàn)(01)webdriv

    摘要:且本小白也親身經(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...

    Half 評(píng)論0 收藏0
  • 學(xué)習(xí)python12小時(shí)后,告訴你,學(xué)python真沒(méi)你想的那么難!

    摘要:列入全國(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)嗎?你...

    Kaede 評(píng)論0 收藏0
  • 首次公開(kāi),整理12年積累的博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時(shí)間永遠(yuǎn)都過(guò)得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過(guò)去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

tinylcy

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<