作者vi000246 (Vi)
看板Python
標題Re: [問題] 在學習程式語言,如何做到有效率的學習
時間Wed Jan 3 00:33:33 2018
講一下我寫爬蟲的思路好了
第一步是分析網頁 用chrome的F12
有個NetWork頁籤
手動執行網頁 看送出去的表頭長怎樣 Response是什麼
我推薦用fiddler這軟體取代F12
它有個composer功能 把你發送的request複製下來貼到這裡
能直接發送同樣的request 你可以用這個功能研究是哪個header會影響response
做完第一步 你可以把整個流程寫下來 列出每個request
登入->進到影片列表->取得影片連結->換頁
p.s. 如果登入有驗證碼的話 這網站你可以先跳過了
這該死的圖要學很多東西才繞得過去
通常會在取得影片連結這邊卡住
這邊就只能看經驗了 有的直接抓mp4的連結
有的要用一連串的request才能取得真實連結
有的用swf的player撥放 還要反組譯swf看他怎麼request的
這是我用來抓vimeo影片的程式碼 vimeo把影片連結藏在iframe裡
https://goo.gl/VSVjFb
第二步是清理數據
成功取得html後 就要想辨法拿到目標資料
我以前是用正規表達式硬幹
但現在有很多方便的東西 像beautifulsoup 或是lxml
像這裡第77行開始 就是用xpath抓的
https://goo.gl/G52XKH
取到影片連結後就簡單了 取個不重覆的檔名存到硬碟就好
列一下你會用到的關鍵字
html、javascript(選配 有些網站會用js防爬蟲 需要分析js程式碼)、
正規表達式、xpath(這東東是類似jquery選擇器的東西)
python的requests、beautifulsoup函式庫
當然你也可以直接學selenium 就不需要上面繁瑣的分析request流程了
但是想要爬難一點的網站 基本功還是很重要的
selenium把一些很難克服的反爬蟲機制 ex. csrf token、用Ajax寫的單頁式網站
cookie等等 很簡單就繞過了
當然想速成的話用selenium是最快的
你可以參考一下
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.204.135.153
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1514910816.A.267.html
推 Yshuan: 推這篇 如果練習目標知名的話 github可以對解答 01/03 01:18
推 f496328mm: 推selenium,可以說是萬解,不過缺點是速度比較慢 01/03 07:35
推 jamesxxx1997: 臏瞻j大的教學,我是用selenium來寫抓影片的code 01/03 21:22
→ jamesxxx1997: 因為網站有不少javascriptQQ,不過原本想用selenium 01/03 21:23
→ jamesxxx1997: 加上request,因為單獨selenium要有點擊下載的按鈕 01/03 21:23
→ jamesxxx1997: 然後就卡住了...,我會再重新把我的問題縮小、梳理 01/03 21:24
→ vi000246: 你要找出影片的實體路徑 影片撥放跟下載影片的原理是一 01/03 21:35
→ vi000246: 樣的 網站會對影片的路徑發送request 回傳串流 差別是 01/03 21:36
→ vi000246: 撥放器會解讀串流 播放影片 下載下來的串流就是影片檔案 01/03 21:36
推 jamesxxx1997: n的,我再以"播放器 python"為關鍵字找一下教學~ 01/03 21:54
→ vi000246: 你可以先找一下其他影片下載器的爬蟲 看別人是怎麼下載 01/03 23:07
→ vi000246: 的 這跟播放器關係不大 可以先拿youtube download 01/03 23:08
→ vi000246: 當關鍵字 01/03 23:08