天天看點

Python3爬取今日頭條有關《人民的名義》文章

Python3爬取今日頭條有關《人民的名義》文章

最近一直在看Python的基礎文法知識,五一假期手癢癢想練練,正好《人民的名義》剛結束,于是決定扒一下頭條上面的人名的名義文章,試試技術同時可以集中看一下大家的腦洞也是極好的。

首先,我們先打開頭條的網頁版,在右上角搜尋框輸入關鍵詞,通過chrome調試工具,我們定位到頭條的search欄調用的的API為:

http://www.toutiao.com/search_content/?offset=&format=json&keyword=%E4%BA%BA%E6%B0%91%E7%9A%84%E5%90%8D%E4%B9%89&autoload=true&count=&cur_tab=
           

其傳回的資料是标準的json,所有的相關文章連結在data中,key值為article_url,好準備工作完成,我們開始動手coding。

首先,我們構造頭條必要的search條件:

query_data = {
    'offset': offset,
    'format': 'json',
    'keyword': '人民的名義',
    'autoload': 'true',
    'count': ,  # 每次傳回 20 篇文章
    'cur_tab': 
}
           

當然,我們除了search參數之外,還需要必要的header頭資訊,仔細檢視之後我們可以看到,

Python3爬取今日頭條有關《人民的名義》文章

我們隻選取其中必要的資訊,不放cookie;

Python3爬取今日頭條有關《人民的名義》文章

然後是編碼查詢條件

Python3爬取今日頭條有關《人民的名義》文章

其中_get_query_string方法将query_data編碼;

拿到article_req之後解析擷取目前搜尋結果的所有文章連結,實作如下:

Python3爬取今日頭條有關《人民的名義》文章

擷取到文章連結之後,我們打開每一個url進行解析。

Python3爬取今日頭條有關《人民的名義》文章

此處,我們簡單地對article_content進行解析,取出文章标題、内容和圖檔。

Python3爬取今日頭條有關《人民的名義》文章

解析完成之後,我們将内容儲存到mongo中,友善後續的取數分析。

Python3爬取今日頭條有關《人民的名義》文章

然後我們運作一下程式,

Python3爬取今日頭條有關《人民的名義》文章

運作程式的時候我們發現,通過search來搜尋最後得到的文章數量有限,隻有幾十篇文章,估計是頭條的限制。

下一篇我們将介紹如何通過一篇文章和相關推薦進行鍊式爬取所有的關聯推薦文章。