1. 程式人生 > >知乎內容抓取二(內含百度知道、百度熱點和代理ip抓取)

知乎內容抓取二(內含百度知道、百度熱點和代理ip抓取)

sts 精華 可用 其他 添加 get word 登錄 rar

代碼路徑:https://github.com/prophetss/zhihu-crawl

  接上一篇,知乎的抓取主要是獲取所有話題id進而可以得到所有話題url地址然後就可以抓取具體內容了。之前通過根話題遞歸向下抓取整個話題有向圖無環圖會缺失很多,原因是不登錄無法查看全部話題結構,而登陸後又無法連續抓取。這個問題我確實沒想到什麽特別好的辦法,但是我發現話題是可以搜索的,所以就想出這個細水長流的辦法,不斷抓取百度知道等關鍵詞然後在知乎上搜索相似話題,然後再擴展搜索到的話題,進而抓取對應內容。

  先說下結果,結果存放在redis數據庫中,一共由四個hash表保存

  1.zhTopicName,key-話題,value-話題id
  2.zhTopicDAG(保存話題結構,有向無環圖),key-父話題id,value-子話題id列表
  3.zhTopicMessage,key-話題id,value-關註人數和問題數
  4.zhTopicQuestions,key-話題id,value-此話題精華問題相關內容

  由於有多個文件所以我傳到git上了,下面再大致說下代碼結構

  首先keywords_generator.py這個文件是獲取關鍵詞文件,裏面已經寫了百度知道和百度熱點關鍵詞抓取,也可以添加其他的只要最後放進數據庫zhTemporaryWords集合中即可,其實也可以把新華詞典整個導進去..

  然後zhihu_topic_crawl內會將上面得到的關鍵詞在知乎上搜索抓取其全部搜索結果,再根據前者結果擴充(目前是向上找父話題一直到根話題)

  最後zhihu_message_crawl內通過所有得到話題id得到對應url抓取關註認識問題數精華問題等內容

  另外還有代理ip問題,我寫了一個簡單抓取代理ip的方法返回的是requests直接可用結構,

實測實際不是很好用,關鍵有很多是失效的。所以我推薦一個https://github.com/jhao104/proxy_pool此程序,這個程序是抓取n多代理ip然後檢測可用的保存,很好用。

  最後,代碼還在持續改進中,目前連續跑了一天多一共抓取了兩萬多個話題,代碼更新後這裏也會對應更新。

知乎內容抓取二(內含百度知道、百度熱點和代理ip抓取)