爬虫python下载视频_用python做爬虫下载视频
用python有一段時間了,對python是十二分喜愛,在我看來python是個好工具,可以輕松簡潔的幫我完成一些我想要完成的工作。下面和大家分享一下我用python爬取某網站視頻的案例。用python去保存網站的視頻,主要是為了后續的查看和備份。如果有需要做爬蟲研究的同學可以一起探討下。本文主要用到requests庫和BeautifulSoup庫。
1.抓取視頻第一步,分析目標網站的地址
本文中我爬取的是X網站,這個網站需要登錄,所以第一步是模擬網站登錄,如果你抓取的網站是不需要登錄的,可以忽略這一步。下面放上代碼。
session = requests.session()
UA = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.13 Safari/537.36"
header = {"User-Agent": UA}
session.post(login_url,headers=header,data={'phone':'***','password':'***'})
2.抓取視頻第二步,分析頁面當中的視頻地址
查看視頻地址的方法有很多,我用的是google的開發者工具,通過查看network,查看視頻頁面所請求的鏈接地址,然后根據視頻頁面url的get參數,找出請求視頻地址二者之間的關系。放上network的截圖視頻頁面實際的請求鏈接
3.抓取視頻第三步,模擬請求視頻地址,保存到本地,下面放上部分代碼
#模擬請求視頻頁面
f = session.get('http://www.xxx.com/xxxxxxxxxxxx',headers=header)
用到BeautifulSoup庫解析頁面源代碼當中的一些參數
soup = BeautifulSoup(f.content,'html.parser')
lesson_list = soup.find_all('li',attrs={'class':'video'})
if lesson_list:
all_urls = {}
for lesson in lesson_list:
v = lesson.attrs['onclick']
matches = re.compile(r'\d+').findall(v)
id = matches[0]
lesson_id = matches[1]
#構造要保存的文件名
filename = lesson.attrs['data-123'] + '_' + lesson.attrs['data-456']
filename = re.sub("[\s+\.\!\/_,$%^*(+\"\']+|[+——!,。??、~@#¥%……&*()]+",' ',filename)
filename = filename.replace(' ', '_').strip('_')
mp4_url = session.get('http://www.xxx.com?id={}&token_id={}'.format(lesson_id,mp4_token_id),headers=header)
#拼接保存的文件地址
file = dirname + filename + '_'+ lesson.attrs['id'] + '.mp4'
with open(file, 'wb') as f:
video = requests.get(mp4_url.text, stream=True)
print('正在下載視頻:id:{},lesson_id:{},file_name:{},url:{}'.format(id, lesson_id, file, mp4_url.text))
for chunk in video.iter_content(chunk_size=1024):
if chunk:
#保存視頻
f.write(chunk)運行代碼,已經開始下載視頻^_^
補充兩點
1>需要用到python requests庫當中的requests.session(),如果是需要登錄的網站,需要先登錄,再使用同一個session去請求其它頁面
2>如果想提高抓取效率,可以啟用多進程,多進程可以大大提高爬取視頻的效率
from multiprocessing import Pool
pool = Pool(10) #創建進程池,里面有10個進程
t = pool.map(run,args)
pool.close()
pool.join()
總結
使用python抓取視頻還是很方便的,關鍵是找到視頻頁面url和視頻地址url之間的聯系,然后模擬請求視頻地址url就可以了。最后注意必要時刻可以采取多進程,更換ip,更換請求頭的方式去抓取視頻,防止ip被網站封禁,這是需要注意的,如果大家有爬蟲方面的其他奇淫技巧,歡迎聯系我一起探討。
總結
以上是生活随笔為你收集整理的爬虫python下载视频_用python做爬虫下载视频的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3G开发遇到的问题
- 下一篇: python获取文件夹下文件_Pytho