在今日頭條收藏了很多視訊,文章什麼的,通過頭條的界面檢視相當不友善,由于産生了要儲存到本地的想法。
由是用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可真是夠爛的!