好久不見,我又來了。。。
上次給大家分享了如何爬取某平臺付費音樂的方法,我在后臺收到了一些好友的留言,說能不能分享一下如何爬取視頻網(wǎng)站的教程。的確,我到現(xiàn)在還沒有做過這方面的研究,那今天我們就分享一下,如何爬取百思不得姐這個網(wǎng)站的視頻。為什么選擇這個網(wǎng)站呢,因為這個相對來說比較簡單,它可以為我們爬取抖音視頻做鋪墊,那么你就知道我們下次的文章就是介紹如何爬取抖音視頻了。好了話不多說,我們開始研究。
1
首先我們打開百思不得姐網(wǎng)站的視頻部分,鏈接在這里:http://www.budejie.com/video/,打開一下就是這個樣子:
老規(guī)矩,首先開啟開發(fā)者模式,審查元素了解一下,然后立馬就能發(fā)現(xiàn)視頻鏈接:
然后將圖中的href屬性的值與主域名進行綁定,播放地址就出來了?這爬蟲怎么這么簡單,比爬文字、圖片簡單多了!其實并不是,沒有這么簡單。因為你這樣輸入地址就會發(fā)現(xiàn)是錯誤的鏈接:
是不是感覺被套路了?哈哈哈哈,其實這個是最基本的套路了,我見過比這個更套路人的,里面竟然有一個性別參數(shù),針對男女顯示不同的頁面。。。。好了,我們繼續(xù)。我們嘗試將點擊播放頁面,發(fā)現(xiàn)下面圖中一段類似于圖片的鏈接,就是這個播放框?qū)捻撁嬖匚恢茫?/p>
但是當我們點擊圖中播放框中間的播放倒三角按鈕時,發(fā)現(xiàn)頁面鏈接沒有發(fā)生變化,依舊是圖片地址,但是這里的視頻卻是開始播放了。這個是不是有點疑惑?
如果你不相信,那你可以點擊圖中的圖片鏈接:http://mpic.spriteapp.cn/crop/566x360/picture/2019/0314/29295118_103.jpg,
一回車圖片就出來了:
這就是該視頻的封面圖片,那么現(xiàn)在問題來了?(不是問你挖掘技術(shù)哪家強)真實的視頻播放地址到底在哪里呢?
這個網(wǎng)站有一個非常好的地方就是提供了視頻下載接口,點擊下載按鈕,就會彈出下載窗口:
看到?jīng)]有,視頻都是mp4結(jié)尾的,那好我們在源碼里面搜一下,看有沒有包含mp4的代碼:
出現(xiàn)了,我們點擊一下這個鏈接,你會發(fā)現(xiàn)這個就是我們觸發(fā)彈窗的鏈接。如此看來,我們就找到了視頻地址。還有就是視頻的頁數(shù),通過多次觀察這里的頁數(shù)一共有50頁,這個大家不用疑惑,因為我已經(jīng)判斷過了。接下來就是書寫代碼了,這里我提供一下完整的代碼:
import requestsimport reimport urllib.requestheaders ={ 'User-Agent': 'Chrome/50.0.2661.102' }# proxies = {# 'http': 'http://116.209.54.203:9999',# }start_url ="http://www.budejie.com/video/"url_info = []for i in range(1,51): url = start_url + str(i) # 拼接url def parse_html(url): data = requests.get(url, headers=headers).text url_content = re.compile('(<div class="j-r-list-c">.*?</div>.*?</div>)', re.S) # 正則編譯 url_contents = re.findall(url_content, data) for x in url_contents: url_link = r'data-mp4="(.*?)"' # 視頻地址 url_items = re.findall(url_link,x) if url_items: # 判斷視頻是否存在 name_rev = re.compile(r'<a href="/detail-.{8}?.html">(.*?)</a>', re.S) # 正則編譯 name_items = re.findall(name_rev, x) for k, v in zip(name_items, url_items): url_info.append([k, v]) print(k,v) for i in url_info: # i[1]=url i[0]=name urllib.request.urlretrieve(i[1], 'I:\\Python3.6\\baisibudejie\\video\\%s.mp4' % (i[0])) parse_html(url)
好了,今天的分享就到這里了,下期我們開始爬取抖音視頻啦。