天天看點

【安排】23行代碼爬取知乎全部回答(内附源碼和應用程式)

上個月行哥為了給大家推薦書單,1分鐘爬取了知乎5646個回答,并統計出前十名推薦量最高的書單給大家分享,并且為了大家使用友善将該篇推文中的代碼轉成應用程式給大家使用,但是萬萬沒想到

居然有小夥伴要求能不能直接讓爬蟲代碼回答爬取下來做成應用程式

兩個字:安排!

1.代碼邏輯

這個核心代碼是直接對上篇推文中使用的代碼進行修改,删去了對書籍名稱的提取,添加了爬取内容的寫入檔案,小夥伴隻要把getAnswers(問題号)裡的傳入參數改成想爬取回答的問題号,剩下的事情就隻需要等待了

什麼是知乎問題号?

   檢視知乎網頁位址,question後的一串數字就是問題号

【安排】23行代碼爬取知乎全部回答(内附源碼和應用程式)

def getAnswers(qid):
    offset = 0
    num = 1
    f = open("知乎回答%s.txt" % qid, "a")
    while True:
        qid = qid
        print('Offset =', offset)
        # 知乎api請求
        data = getAnser(qid, offset)
        print(data)
        if len(data['data']) == 0:
            break
        for line in data['data']:
            # 儲存回答資料
            content = line['content']
            pattern = re.compile(r'<[^>]+>', re.S)
            result = pattern.sub('', content)
            print(result)
            f.write("\n【第%d個回答】" % num)
            num += 1
            f.write(result)
        offset += 20
        time.sleep(1)
    f.close()

getAnswers(62096167)      

2.應用程式版本

對于不了解爬蟲的小夥伴,隻需要打開一行資料爬取知乎回答.exe,修改問題号和選擇儲存路徑,就可以将該知乎問題下的所有回答儲存到目前路徑下,如下圖所示