1. 程式人生 > >Python3爬取今日頭條列表及詳情

Python3爬取今日頭條列表及詳情

以上是小白爬蟲記,高手請直接繞行。
最近python那是相當的火,正好專案要用到爬蟲,爬取今日頭條的內容。作為一名伸手黨,自然想到了度娘,發現一大堆東西,各種嘗試,最後引用了這篇部落格:
利用Python3解析Ajax爬取今日頭條圖集
但是搜了半天發現全部都是爬取頭條列表的文章,就沒有發現詳情的,但是我是需要詳情的,沒辦法只能自己寫,期間遇到了不少坑,記錄下,以防下次再入坑。

  1. 分析下頭條是採用的動態載入js程式碼來渲染布局,那正常的通過dom節點獲取元素內容的爬蟲是行不通了。只能通過直接呼叫請求獲取內容解析。
    這裡寫圖片描述

  2. 獲取詳情中請求資源js
    這裡寫圖片描述

    這時候可以找到一堆載入資源,一個一個找,被我發現上圖資源下的路徑和列表中的tag_id幾乎一模一樣,只是多了一個a,百思不得其解,發現所有的都是加了一個a然後拼接tag_id得到詳情的資料來源。
  3. 遇到了坑
    4.1. 獲取不到資源
    解決:將request增加請求頭,能呼叫到資料,緊接著遇到了4.2的坑。
     headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36"
, "Accept": "text/html,application/xhtml+xml,application/xml; q=0.9,image/webp,*/*;q=0.8"} #獲取session session = requests.Session() #呼叫請求 將請求頭拼接 response = session.get(url, headers=headers)
4.2 通過呼叫列表方法呼叫詳情,直接加a拼接發現呼叫的網站永遠是

這裡寫圖片描述
這應該是頭條為了死別爬蟲搞了一個反扒技術。這個坑搞了我好長時間,百思不得其解,曾經一度認為難道是因為我愛國所以一直給我返回這個。。。當然這肯定是不可能的.意外發現每次點選詳情的時候好像是從一個網頁跳轉到

https://www.toutiao.com/a6539307456323912196/ ,肯定是做了重定向的。試著將頭部新增Referer。發現居然不給我彈出總書記的講話了。一萬句草泥馬在沸騰。
4.3 頭條反扒技術直接封ip。發現爬了一會就請求不到資料了。
解決:網上一查,原來是ip被封了,沒辦法,到網上各種找免費代理ip,但是都不怎麼好使。最好只要找那種付費使用的體驗了幾把。推薦幾個不錯的。
太陽代理
牛魔ip
上面兩個都是收費的,但是有十分鐘的體驗時間。當然了,誰要是有免費的,歡迎分享。萬分感謝。以上就是我這個小白爬頭條詳情的辛酸史。畢竟技術菜。高手勿噴。。。。。
最後貼幾張爬取的資料圖:
這裡寫圖片描述這裡寫圖片描述