天天看點

抓取今日頭條的個人收藏夾目錄總述總結分析問題代碼代碼分析與心得

在今日頭條收藏了很多視訊,文章什麼的,通過頭條的界面檢視相當不友善,由于産生了要儲存到本地的想法。

由是用python寫了一個爬蟲,可以抓取個人的今日頭條的收藏夾内的内容到本地,并儲存為excel檔案和html檔案,友善檢閱。同時支援後續更新,自動添加新的收藏夾條目,不會每次都去完整抓取。

不抓不知道,一抓吓一跳,居然有4000多條資料,暈。

總述

登入

登入使用了cookie的方式,即是需要從浏覽器裡複制出已登入使用者的cookie資訊,供python使用

資料結構

class Record:
    '一條收藏夾記錄'
    def __init__(self,title,url,tag,repin_time,behot_time):
        self.title = title
        self.url = url
        self.tag = tag
        self.repin_time = repin_time
        self.behot_time = behot_time
        
class FavPage:
    '代表一個頁面'
    def __init__(self,has_more,next_page_code,Records):
        self.has_more = has_more
        self.next_page_code = next_page_code
        self.Records = Records
           

抓取

使用python 的urllib庫

def getUrl(url):
   
        try:
            response = requests.get(url,headers=header,timeout=3)
            if response.status_code == 200:
                return response.text
            return None
        except Exception as e:
            print('Error occurred, retry ',str(e),' ',url)
            #return None
           

分析

使用python的json庫

儲存

使用python的xlsx庫

運作

linux檔案格式,在linux下運作,windows下沒裝python。

總結

其實到過頭來看一看,真是挺簡單的,整個程式不足100行。加上很多一些檢查,輔助之後,也就不到200行。8 過有了這個東東,以後抓什麼都可以了,HHHH

分析

今日頭條的收藏夾通過一個url來通路,後面跟了一個參數,這個參數是一個時間戳,表明從此時間開始往後的收藏夾條目,抓取20個。這是唯一的重要參數。

傳回值是一段json資料。

問題

重複,頻繁,快速的通路會導緻通路被封。導緻傳回空資料,不過過一段時間就會恢複正常。

代碼

有空把代碼傳上來

代碼分析與心得

  • 使用python寫這個東西,有很多庫可以使用,功能完善,用起來相當友善。
  • 但python的文法很麻煩,而且當中有一點函數式程式設計的思想,我隻能說,這TM就是畫蛇添足,折騰了半天,還是不用函數式程式設計比較好。
  • python可真是夠爛的!