原本我的作法是:(其實是學習大數學堂的作法)
先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