看板 Python 關於我們 聯絡資訊
原本我的作法是:(其實是學習大數學堂的作法) 先requests下載的影片頁面 剖析出html.content後 撈出args中的url_encoded_fmt_stream_map 可是從3月中左右,就找不到這東西了 (應該說看得到,可是似乎是抓不到?被藏在js裡面.....試過用Selenium,一樣拉不出來 ) 後來,曾經嘗試,至少自己手動(眼動)找影片的連結網址 卻一直都是無法下載的狀況,或是跑個幾百K到1MB 就結束了 (事後證實,連結不完全對......) 改由zerof大大的解惑 換個方式,找到正確的網址後,就可以正常下載了...... 感恩阿!! ※ 引述《neil987 (R5大小姐-EX人品崩壞)》之銘言: : 如題 最近想用爬蟲做個youtube影片下載器 : 靈感來源是http://kej.tw/flvretriever/ 這個YOUTUBE下載網站 : 步驟是先貼上網址,然後下載一個影片info : 然後把info裡面的內容貼上網頁給網頁分析出連結 : 影片info裡面大概就是就是從某個網址request回來的內容 : 影片實體連結是url_encoded_fmt_stream_map之後的url=video_real_link : 隨便舉一個影片的連結 : 大概長這樣 : https://r6---sn-3cu-3iie.googlevideo.com/videoplayback?lmt=1458XXXX.....(下略 : 縮:https://goo.gl/L8ug5f : 點進去是個真實的影片連結 : 所以上實作(Python 2.7): : import requests,re,urlparse,shutil : link = "https://www.youtube.com/watch?v=qQ7g1tfEGFc"
: res = requests.get(link).text : co = re.compile('"url_encoded_fmt_stream_map":"(.*?),"fade') : m = co.search(res) : url_all = m.group(1).decode('unicode_escape') : a = urlparse.parse_qs(url_all) : print a['url'] : 不過這邊取得的影片連結就不對了 : => : https://r6---sn-3cu-3iie.googlevideo.com/videoplayback?key=yt6&XXXXX : 縮:https://goo.gl/vbZVeB : 然後直接對瀏覽器丟這個網址會出現403 : 感覺上就是沒有抓到影片的真實位置 : 問題應該有2個可能 : 1.一開始跟原影片網址要request時的Header資訊 : 2.不該跟原始網址要request,而是其他網址(api之類的) : 還請前輩們指教 感謝~~ -- 家教經驗淺談: http://www.wretch.cc/blog/coeric&category_id=8897699 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.73.181.155 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1496740434.A.E5C.html