python爬取视频教程
- 格式:docx
- 大小:36.96 KB
- 文档页数:2
教你如何使⽤Python下载B站视频的详细教程前⾔众所周知,⽹页版的B站⽆法下载视频,然本⼈喜欢经常在B站学习,奈何没有⽹时,⽆法观看视频资源,⼿机下载后屏幕太⼩⼜不想看,遂写此程序以解决此问题步骤话不多说,进⼊正题1.在电脑上下载python的开发环境,2.下载pycharm开发⼯具,3.同时按键盘上的win键与r键,在弹出的对话框中输⼊cmd点击确定进⼊cmd命令⾏,在⾥⾯输⼊pip install you-get,之后按键盘enter键,进⾏you-get的下载,下载完后退出cmd4.打开pycharm开发⼯具,新建⼀个python file命名为bilibili,把下⾯的代码复制进去,关于pycharm开发⼯具的使⽤,点我⼀下,观看教程import sysimport you_getfrom multiprocessing import Pool#url ='你要下载的视频链接'#path='你要把视频保存到哪⾥'url = 'https:///video/BV13s411371G?p='path = 'D:/Bzhan/openstack'total=14def down1():start_url = urlpath1 = pathfor i in range(1, 3, 1):url1 = start_url + str(i)download(url1, path1)def down2():start_url = urlpath1 = pathfor i in range(3, 5, 1):url1 = start_url + str(i)download(url1, path1)def down3():start_url = urlpath1 = pathfor i in range(5, 7, 1):url1 = start_url + str(i)download(url1, path1)def down4():start_url = urlpath1 = pathfor i in range(7, 9, 1):url1 = start_url + str(i)download(url1, path1)def down5():start_url = urlpath1 = pathfor i in range(9, 11, 1):url1 = start_url + str(i)download(url1, path1)def down6():start_url = urlpath1 = pathfor i in range(11, 13, 1):url1 = start_url + str(i)download(url1, path1)def down7():start_url = urlpath1 = pathfor i in range(13, 15, 1):url1 = start_url + str(i)download(url1, path1)def down8():start_url = urlpath1 = pathfor i in range(35, 40, 1):url1 = start_url + str(i)download(url1, path1)def download(url, path):sys.argv = ['you-get', '-o', path, url]you_get.main()def main():po = Pool(8)po.apply_async(down1)po.apply_async(down2)po.apply_async(down3)po.apply_async(down4)po.apply_async(down5)po.apply_async(down6)po.apply_async(down7)po.apply_async(down8)po.close()po.join()if __name__ == '__main__':main()接下来就可以运⾏程序,下载视频了5.下⾯这个程序也能实现下载B站视频的功能,不过下载速度简直⽆语,称的上龟速import you_getimport sysimport you_getdef download(url,path):sys.argv=['you-get','-o',path,url]you_get.main()if __name__=='__main__':start_url='https:///video/BV13s411371G?p='path = 'D:/Bzhan/openstack'for i in range(1,14,1):url=start_url +str(i)download(url,path)到此这篇关于教你如何使⽤Python下载B站视频的详细教程的⽂章就介绍到这了,更多相关Python下载B站视频内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
Python网络爬虫中的音频与视频下载技巧在网络时代,音频和视频资源的获取变得越来越重要。
而Python作为一种功能强大的编程语言,提供了丰富的工具和库来实现网络爬虫的开发。
本文将介绍一些Python网络爬虫中的音频与视频下载技巧,帮助您更好地获取和保存这些资源。
一、使用第三方库Python中有一些强大的第三方库可以用于处理音频和视频文件的下载。
其中最常用的是requests和urllib库。
以下是使用requests库下载音频和视频文件的示例代码:```pythonimport requestsdef download_audio(url, filename):response = requests.get(url)with open(filename, 'wb') as file:file.write(response.content)def download_video(url, filename):response = requests.get(url, stream=True)with open(filename, 'wb') as file:for chunk in response.iter_content(chunk_size=1024):if chunk:file.write(chunk)```上述代码中,download_audio函数用于下载音频文件,download_video函数用于下载视频文件。
您只需要传入对应的URL和保存的文件名即可。
二、音频下载技巧1. 了解音频格式在下载音频文件之前,了解文件的格式是十分重要的。
不同的音频格式可能需要不同的处理方式。
常见的音频格式有MP3、WAV、FLAC等。
2. 解析音频源有些网站会将音频资源隐藏在其他的网页元素中,下载前您可能需要通过解析源代码或是使用相关工具来定位到音频文件的URL。
3. 多线程下载如果需要下载大量的音频文件,可以考虑使用多线程来提高下载速度。
Python网络爬虫中的在线视频与直播数据抓取随着互联网和数字技术的快速发展,在线视频和直播已经成为人们日常娱乐和获取信息的重要方式。
Python作为一种强大的编程语言,可以用于实现网络爬虫,并能够帮助我们抓取在线视频和直播数据,为用户提供更好的观看体验和使用感受。
本文将介绍Python网络爬虫中抓取在线视频和直播数据的方法和技巧。
一、在线视频数据抓取在网络上,有许多平台提供了丰富多样的在线视频资源,如优酷、腾讯视频、爱奇艺等。
我们可以利用Python编写网络爬虫程序,来抓取这些平台上的视频数据。
1. 网页分析与解析首先,我们需要通过发送HTTP请求,获取目标网页的HTML源代码。
然后,利用Python中的解析库(如BeautifulSoup、lxml等)对源代码进行解析和提取,从而获取视频的相关信息,如标题、播放量、评论等。
2. URL拼接与下载接下来,我们需要从视频信息中提取出视频的URL链接。
有些平台可能会对视频链接进行加密或者隐藏,我们可以通过分析网页中的JavaScript脚本,来获取真实的视频链接。
获取到视频链接后,我们可以使用Python的下载库(如requests、urllib等)来进行视频的下载。
3. 视频解码与播放在下载完成后,视频文件通常是经过编码的,我们可以使用Python 的解码库(如ffmpeg、cv2等)来进行视频解码工作,并通过Python 的图形库(如opencv、pygame等)来进行视频的播放。
二、直播数据抓取与在线视频不同,直播数据是实时生成的,我们需要通过爬虫程序来实时抓取直播平台上的数据。
1. 弹幕数据抓取直播平台上,观众可以实时发送消息,这些消息通常以弹幕的形式出现在视频画面上。
我们可以通过网络爬虫程序抓取直播平台的弹幕数据,进而进行分析和处理。
2. 实时数据采集与展示除了弹幕数据,直播平台上还会提供其他实时数据,如在线观看人数、点赞数量等。
我们可以编写爬虫程序,实时获取这些数据,并通过可视化工具(如matplotlib、Tableau等)进行展示和分析。
Python爬取某平台短视频的方法这篇文章主要介绍了Python爬取某平台短视频的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下前言本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。
基本开发环境Python 3.6Pycharm相关模块的使用1.import os2.import requests安装Python并添加到环境变量,pip安装需要的相关模块即可。
一、确定需求爬取搞笑趣味栏目的视频内容。
二、网站数据分析首先需要明确一点,好看视频网站加载方式是懒加载的方式,需要你下滑网页才会加载出新的内容加载出来的内容里面有音频播放地址以及标题。
内容比较简单,看代码就行import osimport requestsurl = 'https:///vi deoui/api/videorec?tab=gaoxiao&act=pcFeed&pd=pc&num=2 0&shuaxin_id=1612592171486'headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/5 37.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'} response = requests.get(url=url, headers=headers)json_data = r esponse.json()videos = json_data['data']['response']['videos']for i ndex in videos:title = index['title']play_url = index['play_url']vide o_content = requests.get(url=play_url, headers=headers).conten tpath = 'video\\'if not os.path.exists(path):os.mkdir(path)with op en(path + title + '.mp4', mode='wb') as f:f.write(video_content)p rint('正在保存:', title)到此这篇关于Python爬取某平台短视频的方法的文章就介绍到这了!。
python爬取抖⾳视频的实例分析现在抖⾳的⽕爆程度,⼤家都是有⽬共睹的吧,之前⼩编在⽹络上发现好玩的事情,就是去爬取⼀些⽹站,因此,也考虑能否进⾏抖⾳上的破案去,在实际操作以后,真的实现出来了,利⽤⾃动化⼯具,就可以轻松实现了,后有⼩伙伴提出把appium去掉瘦⾝之后也是可以实现的,那么看下详细操作内容吧。
1、mitmproxy/mitmdump抓包import requestspath = 'D:/video/'num = 1788def response(flow):global numtarget_urls = ['url']for url in target_urls:if flow.request.url.startswith(url):filename = path + str(num) + '.mp4res = requests.get(flow.request.url, stream=True)with open(filename, 'ab') as f:f.write(res.content)f.flush()print(filename + '下载完成')num += 12、Appium对⼿机进⾏模拟操作利⽤Start Server按钮即可启动appium服务再点击Start Session即可启动Android⼿机上的抖⾳app并进⼊到启动页⾯3、python脚本来驱动app,直接在pycharm运⾏即可实例扩展:import requestsimport jsonimport reimport osfrom pprint import pprint as ppimport queueclass DouYin:header = {'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8','accept-encoding': 'gzip, deflate, br','accept-language': 'zh-CN,zh;q=0.9','cache-control': 'max-age=0','upgrade-insecure-requests': '1','user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1', }def __init__(self, url=None):self.url = self.get_RealAddress(url)# 获取⽤户视频的urler_video_url = 'https:///aweme/v1/aweme/post/?{0}'er_id = re.search(r'user/(.*)\?', self.url).group(1) # ⽤户idrequests.packages.urllib3.disable_warnings()self.session = requests.Session()self.target_folder = '' # 创建⽂件的路径self.queue = queue.Queue() # ⽣成⼀个队列对象def user_info(self):self.mkdir_dir()p = os.popen('node fuck.js %s' % er_id) # 获取加密的signaturesignature = p.readlines()[0]user_video_params = {'user_id': str(er_id),'count': '21','max_cursor': '0','aid': '1128','_signature': signature}# 获取下载视频的列表def get_aweme_list(max_cursor=None):if max_cursor:user_video_params['max_cursor'] = str(max_cursor)user_video_url = er_video_url.format('&'.join([key + '=' + user_video_params[key] for key in user_video_params])) # 拼接参数response = requests.get(url=user_video_url, headers=self.header, verify=False)contentJson = json.loads(response.content.decode('utf-8')) # 将返回的进⾏utf8编码aweme_list = contentJson.get('aweme_list', [])for aweme in aweme_list:video_name = aweme.get('share_info', None).get('share_desc', None) # 视频的名字video_url = aweme.get('video', None).get('play_addr', None).get('url_list', None)[0].replace('playwm', 'play') # 视频链接self.queue.put((video_name, video_url)) # 将数据进队列if contentJson.get('has_more') == 1: # 判断后⾯是不是还有是1就是还有return get_aweme_list(contentJson.get('max_cursor')) # 有的话获取参数max_cursorget_aweme_list()# 下载视频def get_download(self):while True:video_name, video_url = self.queue.get()file_name = video_name + '.mp4'file_path = os.path.join(self.target_folder, file_name)if not os.path.isfile(file_path):print('download %s form %s.\n' % (file_name, video_url))times = 0while times < 10:try:response = requests.get(url=video_url, stream=True, timeout=10, verify=False) # 开启流下载with open(file_path, 'wb') as f:for chunk in response.iter_content(1024): # 返回迭代对象f.write(chunk)print('下载成功')breakexcept:print('下载失败')times += 1# 创建对应的⽂件夹def mkdir_dir(self):current_folder = os.getcwd()self.target_folder = os.path.join(current_folder, 'download/%s' % er_id)if not os.path.isdir(self.target_folder):os.mkdir(self.target_folder)# 短链接转长地址def get_RealAddress(self, url):if url.find('') < 0:return urlresponse = requests.get(url=url, headers=self.header, allow_redirects=False) # allow_redirects 允许跳转return response.headers['Location']if __name__ == '__main__':douyin = DouYin(url='/J2B9Sk/')er_info()douyin.get_download()到此这篇关于python爬取抖⾳视频的实例分析的⽂章就介绍到这了,更多相关如何使⽤python爬取抖⾳视频内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
Python网络爬虫中的视频抓取与处理技术近年来,随着互联网的迅猛发展和数字化媒体的普及,视频内容已成为人们获取信息和娱乐享受的重要方式。
在这个大数据时代,利用Python网络爬虫技术来抓取和处理视频数据显得尤为重要。
本文将介绍Python网络爬虫中的视频抓取与处理技术,帮助读者更好地了解和应用这些技术。
一、视频抓取技术及其应用1.1 视频抓取技术视频抓取是指通过网络爬虫技术从互联网上获取视频资源。
Python提供了多种库和工具,可以帮助我们实现视频抓取功能。
其中,常用的有Requests、BeautifulSoup、Scrapy等。
通过这些工具,我们可以模拟浏览器的行为,发送请求并解析返回的HTML页面,从中提取视频链接。
1.2 视频抓取的应用视频抓取技术在多个领域都有广泛的应用。
例如,新闻媒体可以通过视频抓取技术捕捉各大平台上的新闻视频,方便进行报道和分析;在线教育平台可以利用视频抓取技术从优质教育资源中提取视频内容,为学生提供更好的学习体验;此外,视频抓取技术还可以应用于市场调研、广告监测等领域。
二、视频处理技术及其应用2.1 视频处理技术视频处理是指对抓取到的视频数据进行加工、转换、分析等操作的过程。
Python在视频处理领域也提供了丰富的工具和库供我们使用。
例如,OpenCV是一个功能强大的开源库,可以实现视频的剪辑、滤镜、特效添加等功能;FFmpeg是一个跨平台的多媒体处理工具,可以对视频进行编解码、转码等操作。
2.2 视频处理的应用视频处理技术在各行各业都有广泛的应用。
在娱乐领域,我们可以通过视频处理技术实现视频剪辑和特效添加,制作出精彩纷呈的影视作品;在安防领域,视频处理技术可以用于实时监控和行为分析;在医学影像领域,视频处理技术可以辅助医生进行疾病诊断等。
三、Python网络爬虫中的视频抓取与处理实例下面以一个简单的实例来介绍Python网络爬虫中的视频抓取与处理技术。
我们要抓取某视频网站上的一系列教学视频,并对这些视频进行整理和加工,最终生成一个视频播放列表。
Python新⼿爬⾍四:爬取视频⽼样⼦,先上最后成功源码(在D盘下创建'好看视频'⽂件夹,直接运⾏即可获取视频):import sysimport re,osimport requestsfrom you_get import common as you_getdef getVideo(url,path,headers):demo = requests.get(url,headers=headers) # 获取⽹站信息data = demo.json() # 转换为JSON格式data_list = data['data']['response']['videos'] # 获取每个视频的属性列表# 遍历,将每⼀个视频信息展⽰出来for i in data_list:title = i['title'] + '.mp4' # 获取视频名称(描述),视频要修改为的名称,为后边改名做准备url1 = i['play_url'] # 获取视频源urlvideoName = re.split('\?|/',url1)[5][:80]+'.mp4' # 视频下载后,会是⼀⼤串字母和数字的组合,这个主要就是获取视频下载后的原名称# 开始下载print('开始下载:' + title)try:sys.argv = ['you_get', '-o',path,url1] # 视频的属性编辑,选择路径等you_get.main() # 开始下载print(' 下载完成')os.rename(path + videoName, path + title) # 下载完成后,改名操作except:print(title + '下载失败!')if__name__ == '__main__':url = 'https:///videoui/api/videorec?tab=yingshi&act=pcFeed&pd=pc&num=20&shuaxin_id=1592551368953'headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36 Edg/83.0.478.54','cookie': 'BIDUPSID=517516CBF0261FA0AF6B039EAFEDF39C; PSTM=1589624436; BAIDUID=517516CBF0261FA090A0395C8BF0F31A:FG=1; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; PC_TAB_LOG=haokan_website_page path = r'D:\好看视频\\'getVideo(url,path,headers)下载过程:视频展⽰:因为爬取的是推荐视频,每次执⾏会获取不同的视频。
Python如何实现爬取B站视频5⽉3⽇晚,央视在《新闻联播》前播放了B站青年宣⾔⽚《后浪》,这是B站⾸次登陆央视黄⾦时段,今天在朋友圈陆续看到相关的视频。
最早⽤B站的同学都知道,B站是和A站以异曲同⼯的⿁畜视频及动漫,进⼊到⼤众视野的⾮主流视频⽹站。
哔哩哔哩现为国内领先的年轻⼈娱乐、⽂化社区,该⽹站于2009年6⽉26⽇创建,被粉丝们亲切的称为“B站”。
B站之所以⽕,是因为趣味与知识并存。
它是⼀个重度宅腐⼆次元集结地。
B站包含动漫、漫画、游戏,也有很多由繁到简、五花⼋门的视频,很多冷门的软件和绘画技巧在B站都可以找到完整的教学视频。
正如⼀句“你在B站看番,我在B站学习”,B 站还是有⼀些质量⽐较好的学习视频。
当你在B站上看到喜欢的视频想保存下来时,怎么办呢?转⼊正题,本篇推⽂主要介绍如何将B站上把喜欢的视频下载下来,帮助更多需要学习的⼩伙伴,详细步骤如下:⽹页分析视频下载⽅法成果展⽰微信视频号的加⼊,再度引燃了短视频领域,今天我们爬取B站的每天播放量最多的⼩视频,其他类型的视频可以参考这个⽅法。
⽹页分析⽹址为:'/p/eden/rank#/?tab=全部'我们可以看到Request URL这个属性值,我们向下滑动加载视频的过程中,发现只有这段url是不变的。
next_offset 会⼀直变化,我们可以猜测,这个可能就是获取下⼀个视频序号,我们只需要把这部分参数取出来,把 next_offset 写成变量值,⽤JSON 的格式返回到⽬标⽹页即可。
视频下载⽅法上⼀部分已对⽹页进⾏了分析,现在我们可以利⽤requests.get⽅法来获取B站上的⼩视频。
核⼼代码def get_json(url):headers = {'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}params = {'page_size': 10,'next_offset': str(num),'tag': '今⽇热门','platform': 'pc'}try:html = requests.get(url, params=params, headers=headers)return html.json()except BaseException:print('request error')passdef download(url,path):start = time.time() # 开始时间size = 0headers = {'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}response = requests.get(url,headers=headers,stream=True)chunk_size = 1024content_size = int(response.headers['content-length'])if response.status_code == 200:with open(path,'wb') as file:for data in response.iter_content(chunk_size=chunk_size):file.write(data)size += len(data)成果展⽰上⼀部分我们已经展⽰了如何⽤Python下载视频的⽅法,下⾯我们进⾏效果展⽰以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
在Python中,爬取VIP视频的原理主要是通过模拟人类浏览器的行为来实现的。
具体来说,VIP视频通常需要用户登录并授权才能观看,因此,我们可以通过模拟登录和授权的过程来获取视频的访问权限。
以下是一个基本的Python爬取VIP视频的流程:
1.模拟登录过程:首先,我们需要模拟用户登录的过程。
这可以通过使用Python的requests库发送POST请求来实现。
在请求中,我们需要包
含用户名和密码等必要的登录信息。
2.获取授权:在登录成功后,我们需要获取访问视频的授权。
一般来说,网站会通过cookies或者Session等方式来保存用户的授权信息。
我们可
以使用requests库的cookies功能来获取这些信息。
3.获取视频URL:在获取到授权后,我们需要通过某种方式来获取视频的URL。
这可以通过解析视频页面或者使用网站提供的API来实现。
4.下载视频:最后,我们可以通过Python的requests库或者其他的下载工具来下载视频。
需要注意的是,具体的实现过程可能会因为网站的结构和功能而有所不同。
此外,爬取VIP视频还涉及到一些法律和道德问题,因此在进行相关操作时需要谨慎行事。
怎么⽤Python爬取抖⾳⼩视频?资深程序员都这样爬取的(附源码)简介抖⾳,是⼀款可以拍短视频的⾳乐创意短视频社交软件,该软件于2016年9⽉上线,是⼀个专注年轻⼈的15秒⾳乐短视频社区。
⽤户可以通过这款软件选择歌曲,拍摄15秒的⾳乐短视频,形成⾃⼰的作品。
此APP已在Android各⼤应⽤商店和APP Store均有上线。
今天咱们就⽤Python爬取抖⾳视频准备:环境:Python3.6+WindowsIDE:你开⾏就好,喜欢⽤哪个就⽤哪个模块:1from splinter.driver.webdriver.chrome import Options, Chrome2from splinter.browser import Browser3from contextlib import closing4 import requests, json, time, re, os, sys, time5from bs4 import BeautifulSoup获得视频播放地址查询的⽤户ID视频名字列表视频链接列表⽤户昵称1 def get_video_urls(self, user_id):23 + video_names = []4 + video_urls = []5 + unique_id = ''6 + while unique_id != user_id:7 + search_url = 'https:///aweme/v1/discover/search/?cursor=0&keyword=%s&count=10&type=1&retry_type=no_retry&iid=17900846586&device_id=34692364855&ac=wifi&channel=xiaomi&aid=1128&app_name=aweme&8 + req = requests.get(url = search_url, verify = False)9 + html = json.loads(req.text)10 + aweme_count = html['user_list'][0]['user_info']['aweme_count']11 + uid = html['user_list'][0]['user_info']['uid']12 + nickname = html['user_list'][0]['user_info']['nickname']13 + unique_id = html['user_list'][0]['user_info']['unique_id']14 + user_url = 'https:///aweme/v1/aweme/post/?user_id=%s&max_cursor=0&count=%s' % (uid, aweme_count)15 + req = requests.get(url = user_url, verify = False)16 + html = json.loads(req.text)17 + i = 118 + for each in html['aweme_list']:19 + share_desc = each['share_info']['share_desc']20 + if'抖⾳-原创⾳乐短视频社区' == share_desc:21 + video_names.append(str(i) + '.mp4')22 + i += 123 + else:24 + video_names.append(share_desc + '.mp4')25 + video_urls.append(each['share_info']['share_url'])26 +27 + return video_names, video_urls, nickname获得带⽔印的视频播放地址video_url:带⽔印的视频播放地址download_url: 带⽔印的视频下载地址1 def get_download_url(self, video_url):23 + req = requests.get(url = video_url, verify = False)4 + bf = BeautifulSoup(req.text, 'lxml')5 + script = bf.find_all('script')[-1]6 + video_url_js = re.findall('var data = \[(.+)\];', str(script))[0]7 + video_html = json.loads(video_url_js)8 + download_url = video_html['video']['play_addr']['url_list'][0]9 + return download_url视频下载video_url: 带⽔印的视频地址video_name: 视频名watermark_flag: 是否下载不带⽔印的视频1 def video_downloader(self, video_url, video_name, watermark_flag=True):2 + """3 + 视频下载4 + Parameters:5 + video_url: 带⽔印的视频地址6 + video_name: 视频名7 + watermark_flag: 是否下载不带⽔印的视频8 + Returns:9 + ⽆10 + """11 + size = 012 + if watermark_flag == True:13 + video_url = self.remove_watermark(video_url)14 + else:15 + video_url = self.get_download_url(video_url)16 + with closing(requests.get(video_url, stream=True, verify = False)) as response:17 + chunk_size = 102418 + content_size = int(response.headers['content-length'])19 + if response.status_code == 200:20 + sys.stdout.write(' [⽂件⼤⼩]:%0.2f MB\n' % (content_size / chunk_size / 1024))21 +22 + with open(video_name, "wb") as file:23 + for data in response.iter_content(chunk_size = chunk_size):24 + file.write(data)25 + size += len(data)26 + file.flush()27 +28 + sys.stdout.write(' [下载进度]:%.2f%%' % float(size / content_size * 100) + '\r')29 + sys.stdout.flush()获得⽆⽔印的视频播放地址1def remove_watermark(self, video_url):2 + """3+ 获得⽆⽔印的视频播放地址4+ Parameters:5+ video_url: 带⽔印的视频地址6+ Returns:7+ ⽆⽔印的视频下载地址8+ """9 + self.driver.visit('/')10 + self.driver.find_by_tag('input').fill(video_url)11 + self.driver.find_by_xpath('//button[@class="btn btn-default"]').click()12 + html = self.driver.find_by_xpath('//div[@class="thumbnail"]/div/p')[0].html13 + bf = BeautifulSoup(html, 'lxml')14 + return bf.find('a').get('href')下载视频1def run(self):2 + """3+ 运⾏函数4+ Parameters:5+ None6+ Returns:7+ None8+ """9 + self.hello()10 + user_id = input('请输⼊ID(例如40103580):')11 + video_names, video_urls, nickname = self.get_video_urls(user_id)12 + if nickname not in os.listdir():13 + os.mkdir(nickname)14 + print('视频下载中:共有%d个作品!\n' % len(video_urls))15 + for num in range(len(video_urls)):16 + print(' 解析第%d个视频链接 [%s] 中,请稍后!\n' % (num+1, video_urls[num]))17 + if'\\'in video_names[num]:18 + video_name = video_names[num].replace('\\', '')19 + elif'/'in video_names[num]:20 + video_name = video_names[num].replace('/', '')21 + else:22 + video_name = video_names[num]23 + self.video_downloader(video_urls[num], os.path.join(nickname, video_name))24 + print('\n')25 +26 + print('下载完成!')全部代码1 +# -*- coding:utf-8 -*-23 +Python学习交流群:1252409634 +Python学习交流群:1252409635 +Python学习交流群:12524096367 +from splinter.driver.webdriver.chrome import Options, Chrome8 +from splinter.browser import Browser9 +from contextlib import closing10 +import requests, json, time, re, os, sys, time11 +from bs4 import BeautifulSoup12 +13class DouYin(object):14def__init__(self, width = 500, height = 300):15 + """16+ 抖⾳App视频下载17+ """18 + # ⽆头浏览器19 + chrome_options = Options()20 + chrome_options.add_argument('user-agent="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"')21 + self.driver = Browser(driver_name='chrome', executable_path='D:/chromedriver', options=chrome_options, headless=True)22 +23def get_video_urls(self, user_id):24 + """25+ 获得视频播放地址26+ Parameters:27+ user_id:查询的⽤户ID28+ Returns:29+ video_names: 视频名字列表30+ video_urls: 视频链接列表31+ nickname: ⽤户昵称32+ """33 + video_names = []34 + video_urls = []35 + unique_id = ''36 + while unique_id != user_id:37 + search_url = 'https:///aweme/v1/discover/search/?cursor=0&keyword=%s&count=10&type=1&retry_type=no_retry&iid=17900846586&device_id=34692364855&ac=wifi&channel=xiaomi&aid=1128&app_name=aweme38 + req = requests.get(url = search_url, verify = False)39 + html = json.loads(req.text)40 + aweme_count = html['user_list'][0]['user_info']['aweme_count']41 + uid = html['user_list'][0]['user_info']['uid']42 + nickname = html['user_list'][0]['user_info']['nickname']43 + unique_id = html['user_list'][0]['user_info']['unique_id']44 + user_url = 'https:///aweme/v1/aweme/post/?user_id=%s&max_cursor=0&count=%s' % (uid, aweme_count)45 + req = requests.get(url = user_url, verify = False)46 + html = json.loads(req.text)47 + i = 148 + for each in html['aweme_list']:49 + share_desc = each['share_info']['share_desc']50 + if'抖⾳-原创⾳乐短视频社区' == share_desc:51 + video_names.append(str(i) + '.mp4')52 + i += 153 + else:54 + video_names.append(share_desc + '.mp4')55 + video_urls.append(each['share_info']['share_url'])56 +57 + return video_names, video_urls, nickname58 +59def get_download_url(self, video_url):60 + """61+ 获得带⽔印的视频播放地址62+ Parameters:63+ video_url:带⽔印的视频播放地址64+ Returns:65+ download_url: 带⽔印的视频下载地址66+ """67 + req = requests.get(url = video_url, verify = False)68 + bf = BeautifulSoup(req.text, 'lxml')69 + script = bf.find_all('script')[-1]70 + video_url_js = re.findall('var data = \[(.+)\];', str(script))[0]71 + video_html = json.loads(video_url_js)72 + download_url = video_html['video']['play_addr']['url_list'][0]73 + return download_url74 +75def video_downloader(self, video_url, video_name, watermark_flag=True):76 + """77+ 视频下载78+ Parameters:79+ video_url: 带⽔印的视频地址80+ video_name: 视频名81+ watermark_flag: 是否下载不带⽔印的视频82+ Returns:83+ ⽆84+ """85 + size = 086 + if watermark_flag == True:87 + video_url = self.remove_watermark(video_url)88 + else:89 + video_url = self.get_download_url(video_url)90 + with closing(requests.get(video_url, stream=True, verify = False)) as response:91 + chunk_size = 102492 + content_size = int(response.headers['content-length'])93 + if response.status_code == 200:94 + sys.stdout.write(' [⽂件⼤⼩]:%0.2f MB\n' % (content_size / chunk_size / 1024))95 +96 + with open(video_name, "wb") as file:97 + for data in response.iter_content(chunk_size = chunk_size):98 + file.write(data)99 + size += len(data)100 + file.flush()101 +102 + sys.stdout.write(' [下载进度]:%.2f%%' % float(size / content_size * 100) + '\r') 103 + sys.stdout.flush()104 +105 +106def remove_watermark(self, video_url):107 + """108+ 获得⽆⽔印的视频播放地址109+ Parameters:110+ video_url: 带⽔印的视频地址111+ Returns:112+ ⽆⽔印的视频下载地址113+ """114 + self.driver.visit('/')115 + self.driver.find_by_tag('input').fill(video_url)116 + self.driver.find_by_xpath('//button[@class="btn btn-default"]').click()117 + html = self.driver.find_by_xpath('//div[@class="thumbnail"]/div/p')[0].html118 + bf = BeautifulSoup(html, 'lxml')119 + return bf.find('a').get('href')120 +121def run(self):122 + """123+ 运⾏函数124+ Parameters:125+ None126+ Returns:127+ None128+ """129 + self.hello()130 + user_id = input('请输⼊ID(例如40103580):')131 + video_names, video_urls, nickname = self.get_video_urls(user_id)132 + if nickname not in os.listdir():133 + os.mkdir(nickname)134 + print('视频下载中:共有%d个作品!\n' % len(video_urls))135 + for num in range(len(video_urls)):136 + print(' 解析第%d个视频链接 [%s] 中,请稍后!\n' % (num+1, video_urls[num]))137 + if'\\'in video_names[num]:138 + video_name = video_names[num].replace('\\', '')139 + elif'/'in video_names[num]:140 + video_name = video_names[num].replace('/', '')141 + else:142 + video_name = video_names[num]143 + self.video_downloader(video_urls[num], os.path.join(nickname, video_name))144 + print('\n')145 +146 + print('下载完成!')147 +148def hello(self):149 + """150+ 打印欢迎界⾯151+ Parameters:152+ None153+ Returns:154+ None155+ """156 + print('*' * 100)157 + print('\t\t\t\t抖⾳App视频下载⼩助⼿')158 + print('\t\t作者:Python学习交流群:125240963')159 + print('*' * 100)160 +161 +162 +if__name__ == '__main__':163 + douyin = DouYin()164 + douyin.run()。
python爬虫实战案例爬取爱奇艺vip视频一、实战背景爱奇艺的VIP视频只有会员能看,普通用户只能看前6分钟。
比如加勒比海盗5的URL:/v_19rr7qhfg0.html#vfrm=19-9-0-1我们怎么免费看VIP视频呢?一个简单的方法,就是通过旋风视频VIP解析网站。
URL:/这个网站为我们提供了免费的视频解析,它的通用解析方式是:/index.php?url=[播放地址或视频id]比如,对于绣春刀这个电影,我们只需要在浏览器地址栏输入:/index.php?url=/v_19rr 7qhfg0.html#vfrm=19-9-0-1这样,我们就可以在线观看这些VIP视频了:但是这个网站只提供了在线解析视频的功能,没有提供下载接口,如果想把视频下载下来,我们就可以利用网络爬虫进行抓包,将视频下载下来。
二、实战升级分析方法相同,我们使用Fiddler进行抓包:我们可以看到,有用的请求并不多,我们逐条分析。
我们先看第一个请求返回的信息。
可以看到第一个请求是GET请求,没有什么有用的信息,继续看下一条。
我们看到,第二条GET请求地址变了,并且在返回的信息中,我们看到,这个网页执行了一个POST请求。
POST请求是啥呢?它跟GET请求正好相反,GET是从服务器获得数据,而POST请求是向服务器发送数据,服务器再根据POST请求的参数,返回相应的内容。
这个POST请求有四个参数,分别为time、key、url、type。
记住这个有用的信息,我们在抓包结果中,找一下这个请求,看看这个POST请求做了什么。
很显然,这个就是我们要找的POST请求,我们可以看到POST请求的参数以及返回的json格式的数据。
其中url存放的参数如下:xfsub_api\/url.php?key=02896e4af69fb18f70129b6046d7c718& amp;time=1505724557&url=http%3A%2F%2Fwww.iqiyi. com%2Fv_19rr7qhfg0.html&type=&xml=1这个信息有转义了,但是没有关系,我们手动提取一下,变成如下形式:xfsub_api/url.php?key=02896e4af69fb18f70129b6046d7c718& amp;time=1505724557&url=/v_19rr7 qhfg0.html&type=&xml=1我们已经知道了这个解析视频的服务器的域名,再把域名加上:/xfsub_api\url.php?key=02896e4af69fb18f7 0129b6046d7c718&time=1505724557&url=http://ww /v_19rr7qhfg0.html&type=&xml=1这里面存放的是什么东西?不会视频解析后的地址吧?我们有浏览器打开这个地址看一下:果然,我们可以看到视频地址近在眼前啊,URL如下:/vod.do?fmt=4&pno=1121& fid=1FEA2622E0BD9A1CA625FBE9B5A238A6&file=/c 1/2017/09/06_0/1FEA2622E0BD9A1CA625FBE9B5A238A6_ 20170906_1_1_705.mp4我们再打开这个视频地址:瞧,我们就这样得到了这个视频在服务器上的缓存地址。
python中使⽤you-get库批量在线下载bilibili视频的教程此⽂章描述的是在windows10系统pc端python环境下,利⽤you-get库来进⾏bilibili视频批量下载,是在cmd中操作完成,只建议有python环境的⽤户使⽤。
1.安装you-get库,此处需要注意的是you-get的安装不可以⽤conda命令⾏安装,刚刚⼀股脑只想着annoconda的conda命令,浪费了很多时间。
pip install you-get2.安装完成以后,就可以进⾏视频下载啦!you-get -o 本地存储路径 bilibili视频在线⽹址以上是单个视频下载⽅式,我们更多的时候⽤到的是批量下载,这个时候只需要在-o之前加上–playlist即可。
you-get --playlist -o 本地存储路径 bilibili视频在线⽹址3.此时下载任务开始执⾏4.等待,若报错中断下载,则使⽤命令⾏可以查询下载情况you-get -i 'url' --debug⼀般⽹络流畅情况下是不会报错的哈,如果报错了也没有关系,命令⾏重新开启下载,就会从最新未下载的⽬录开始下载啦!知识点补充:在python⾥⾯使⽤you-getyou-get⽐较常见的⽤法是在命令⾏中使⽤,但是如果要在python中使⽤,可以这样来实现:from you_get import commoncommon.any_download(url='⼀个优酷地址',stream_id='mp4',info_only=False,output_dir=r'保存的⽬录',merge=True)mp4代表⾼清总结到此这篇关于使⽤python中you-get库批量在线下载bilibili视频的⽂章就介绍到这了,更多相关python you-get库下载bilibili视频内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
python爬⾍爬取某⽹站视频的⽰例代码把获取到的下载视频的url存放在数组中(也可写⼊⽂件中),通过调⽤迅雷接⼝,进⾏⾃动下载。
(请先下载迅雷,并在其设置中⼼的下载管理中设置为⼀键下载)实现代码如下:from bs4 import BeautifulSoupimport requestsimport os,re,timeimport urllib3from win32com.client import Dispatchclass DownloadVideo:def __init__(self):self.r = requests.session()self.url=self.get_url()self.download_urla=[]self.download_urlb=[]self.url_set=["%s/shipin/list-短视频.html"%self.url]#获取最新⽹址def get_url(self):urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)a=self.r.get('https://',verify=False)b=a.urlreturn b#⼏页内容的⽹址def url_set1(self,n):if n==2:url="%s/shipin/list-短视频-2.html"%self.urlself.url_set.append(url)elif n>=3:m=n+1for i in range(2,m):url="%s/shipin/list-短视频-%d.html"%(self.url,i)self.url_set.append(url)else:pass#分别加载每⼀个页内容的⽹址def download_url1(self):for j in self.url_set:urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)r=self.r.get(j,verify=False)sp1=r.contentsoup = BeautifulSoup(sp1, "html.parser")sp2 = soup.find_all(class_="shown")for i in sp2:url1=re.findall('<a href="(.*?)" rel="external nofollow" ',str(i))u=self.url+url1[0]self.download_urla.append(u)#分别获取各个视频的下载链接def download_url2(self):for i in self.download_urla:urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)r=self.r.get(i,verify=False)sp1=r.contentsoup = BeautifulSoup(sp1, "html.parser")sp2 = soup.find_all(class_="form-control input-sm copy_btn app_disable")for j in sp2:url2=j["data-clipboard-text"]self.download_urlb.append(url2)#将链接写⼊txt中# self.write_txt(url2)#迅雷下载def thunder_download(self):try:thunder = Dispatch("ThunderAgent.Agent64.1")for i in self.download_urlb:thunder.AddTask(i)mitTasks()time.sleep(2)except:print("请下载迅雷,并在其设置中⼼的下载管理中设置为⼀键下载")def mkdir(self,path):folder = os.path.exists(path)if not folder:os.makedirs(path)else:passdef write_txt(self,c):self.mkdir(r"D:\AAAAA")file_name=time.strftime('%Y%m%d_%H%M%S.txt')with open(r"D:\AAAAA\%s"%file_name,'a') as f:f.write(c+"\n")if __name__ == '__main__':d=DownloadVideo()#数字表⽰⼏页的内容d.url_set1(5)d.download_url1()d.download_url2()d.thunder_download()到此这篇关于python爬⾍爬取某⽹站视频的⽰例代码的⽂章就介绍到这了,更多相关python爬⾍爬取⽹站视频内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
Python爬⾍bilibili视频弹幕提取过程详解两个重要点1.获取弹幕的url是以 .xml 结尾2.弹幕url的所需参数在视频url响应的 javascript 中先看代码import requestsfrom lxml import etreeimport re# 使⽤⼿机UAheaders = {"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1" }# 视频urlvideo_url = "https:///video/av37834086.html"html = requests.get(url=video_url, headers=headers).content.decode('utf-8')# 获取弹幕url的参数cid = re.findall(r"comment: '///' \+ (.*?) \+ '.xml',", html)url = "https:///" + cid[0] + ".xml"print(url)response = requests.get(url, headers=headers)html = response.contentxml = etree.HTML(html)# 提取数据str_list = xml.xpath("//d/text()")# 写⼊⽂件with open('bibi_xuxubaobao.txt', 'w', encoding='utf-8') as f:for line in str_list:f.write(line)f.write('\n')先找到弹幕的url,以.xml结尾,所以先找到这串数字所在的位置,并获取这串数字发起第⼆次请求⽽这串数字就在第⼀次请求的响应的JavaScript中,可以通过 re 正则表达式进⾏提取接下来的⼯作就是获取弹幕url返回的所有弹幕数据,然后对响应进⾏数据处理。
【Python 爬虫】批量抓取网页上的视频【Python 爬虫】批量抓取网页上的视频原创2014 年 11 月 30 日 01:08:13标签:python爬虫1、为何学python编程语言方面,本科这几年一直都用C/C++,因为研究生方向与机器学习相关,所以最近大部分时间在学机器学习,看了《机器学习实战》这本书,里面的实例都是用python 来写,并且目前来说,对机器学习算法支持得比较多的语言是python ,matlab/octave当然也很适合用于机器学习,但是毕竟是学术工具,速度等方面肯定不如python ,工业开发还是用python、c++ 。
总之对于学习机器学习,python以及NumPy库要熟悉。
所以这两天决定学一下python,就找了个评价还不错的公开课看了两天,边看边敲代码,感觉python 确实是一门很简单的语言,只要有点C++ 、C、Java 或者其他语言基础,一两天完全可以入门python 。
当然入门简单,精通难,还是要靠多练。
下面简单的小爬虫程序是看完视频后写的,算是第一个小程序2、爬虫小程序因为刚好要看Andrew Ng的机器学习课程,所以就顺便用这个爬虫程序抓取了网页上的视频,网页地址:/special/opencourse/machinelearning.html右键查看源代码,发现提供下载的视频格式都是“.mp4”后缀:网页上提供下载的视频在源代码中都是这种式:href='/mobilev/2011/9/8/V/S7CTIQ98V.mp4'据此可以写出所要匹配的正则表达式:r=r"href='(http.*\.mp4)' "接下来的任务就是获取网页源代码,然后在源代码里面寻找所有匹配正则r 的字符串。
抓取源代码可以利用urllib里的urlopen()方法:page=urllib.urlopen(url),返回的是一个页面的对象page,通过html=page.read()可以将页面源代码保存到html变量中。
python爬取快⼿视频--json数据分析```codeimport requestsfrom bs4 import BeautifulSoupimport jsonimport timeheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36', }def first_get_request(first_request):first_data = json.loads(first_request.text)print(first_data)#进⼊第⼆层first_two_data = first_data['data']['videoFeeds']['list']for num in first_two_data:two_url = 'https:///u/' + num['user']['id'] + '/' + num['photoId']# print(two_url)two_get_request(two_url)def two_get_request(two_url):two_data = requests.get(url=two_url,headers=headers,verify=False)soup = BeautifulSoup(two_data.text,'lxml')#头像name_photo = soup.select('.profile-user img')[0]['src']#名字name = soup.select('.video-card-footer-user-name')[0].text#点赞量number = soup.select('.profile-user-count-info > .watching-count')[0].text#点⼼量num = soup.select('.profile-user-count-info > .like-count')[0].text#内容text = soup.select('.profile-user > .profile-user-desc > span')[0].textitem = {'头像':name_photo,'名字':name,'内容':text,'点赞量':number,'点⼼量':num}with open('爬取的信息.txt','a',encoding='utf8') as f:f.write(str(item) + '\n')time.sleep(3)def main():first_url = 'https:///graphql'formdata = {"operationName": "videoFeedsQuery", "variables": {"count": 50, "pcursor": "50"},"query": "fragment VideoMainInfo on VideoFeed {\n photoId\n caption\n thumbnailUrl\n poster\n viewCount\n likeCount\n commentCount\n timestamp\n workType\n type\n useVideoPlayer\n imgUrls\n imgSizes\n magicFace\n musicName\n location\n liked\n onlyFollowerCanComment\n width\n height\n expTag\n __typename\n}\n\nquery videoFeedsQuery($pcursor: String, $count: Int) {\n videoFeeds(pcursor: $pcursor, count: $count) {\n list {\n user {\n id\n eid\n profile\n name\n __typename\n }\n ...VideoMainInfo\n__typename\n }\n pcursor\n __typename\n }\n}\n"}#访问快⼿界⾯first_request = requests.post(url=first_url,headers=headers,data=formdata,verify=False)#分析⾸页链接first_get_request(first_request)if __name__ == '__main__':main()```最后就找到了我们想要的东西,。
Python不仅能爬网页还能爬取APP呢!批量爬取抖音视频!最新代码繁华落尽and曲终人散 2018-08-09 15:29:58介绍这次爬的是当下大火的APP--抖音,批量下载一个用户发布的所有视频。
各位也应该知道,抖音只有移动端,官网打开除了给你个APP下载二维码啥也没有,所以相比爬PC网站,还是遇到了更多的问题,也花了更多的时间,不过好在基本实现了,除了一点咱在后面说。
谷歌Chrome浏览器有一个模拟手机访问的功能,我们选在iPhone X模式来访问页面,果然看到发布的视频了:我们接下来看下后台请求,不多,很快就找到我们需要的视频信息了,也能直接打开观看视频,到这感觉已经成功了一大半了:两个地址除了max_cursor其他都一样,其实就是上一条返回的json数据中的max_cursor就是下个链接中的max_cursor,然后has_more等于1的时候表示还未全部加载,这样逻辑就清楚了,我们只要先判断has_more是否等于1,等于1的时候我们将max_cursor的值传入下一个链接继续访问获取视频地址,直到has_more等于0为止。
这样所有视频地址都有了,就开始下载吧!!代码部分from selenium import webdriverfrom bs4 import BeautifulSoupimport jsonimport requestsimport sysimport timeimport osimport uuidfrom contextlib import closingfrom requests.packages.urllib3.exceptions import InsecureRequestWarningrequests.packages.urllib3.disable_warnings(InsecureRequestWarning)class douyin_spider(object):"""docstring for douyin_spider"""def __init__(self,user_id,_signature,dytk):print '*******DouYin_spider******'print 'Author : Awesome_Tang'print 'Date : 2018-07-29'print 'Version: Python2.7'print '**************************'print ''erid = user_idself.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36'}mobile_emulation = {'deviceName': 'iPhone X'}# chrome浏览器模拟iPhone X进行页面访问options = webdriver.ChromeOptions()options.add_experimental_option("mobileEmulation", mobile_emulation)self.browser = webdriver.Chrome(chrome_options=options)self._signature= _signatureself.dytk= dytkself.url = 'https:///aweme/v1/aweme/post/?user_id=%s&count=32&max_cursor=0&aid=1128&_signature=%s&dytk=%s'%(erid,self._signature,self.dytk)def handle_url(self):url_list = [self.url,]self.browser.get(self.url)web_data = self.browser.page_sourcesoup = BeautifulSoup(web_data, 'lxml')web_data = soup.pre.stringweb_data = json.loads(str(web_data))if web_data['status_code'] == 0:while web_data['has_more'] == 1:#最大加载32条视频信息,has_more等于1表示还未全部加载完max_cursor = web_data['max_cursor']#获取时间戳url = 'https:///aweme/v1/aweme/post/?user_id=%s&count=32&max_cursor=%s&aid=1128&_signature=%s&dytk=%s'%(erid,max_cursor,self._signature,self.dytk)url_list.append(url)self.browser.get(url)web_data = self.browser.page_sourcesoup = BeautifulSoup(web_data, 'lxml')web_data = soup.pre.stringweb_data = json.loads(str(web_data))max_cursor = web_data['max_cursor']#获取时间戳url = 'https:///aweme/v1/aweme/post/?user_id=%s&count=32&max_cursor=%s&aid=1128&_signature=%s&dytk=%s'%(erid,max_cursor,self._signature,self.dytk)url_list.append(url)else:url_list = []return url_listdef get_download_url(self,url_list):download_url = []title_list = []if len(url_list)> 0:for url in url_list:self.browser.get(url)web_data = self.browser.page_sourcesoup = BeautifulSoup(web_data, 'lxml')web_data = soup.pre.stringweb_data = json.loads(str(web_data))if web_data['status_code'] == 0:for i in range(len(web_data['aweme_list'])):download_url.append(web_data['aweme_list'][i]['video']['play_addr']['url_list'][0])title_list.append(web_data['aweme_list'][i]['share_info']['share_desc'].encode('utf-8'))return download_url,title_listdef videodownloader(self,url,title):size = 0path = title+'.mp4'with closing(requests.get(url, headers = self.headers ,stream=True, verify=False)) as response: chunk_size = 1024content_size = int(response.headers['content-length'])if response.status_code == 200:print '%s is downloading...'%titlesys.stdout.write('[File Size]: %0.2f MB ' % (content_size/chunk_size/1024))with open(path, 'wb') as f:for data in response.iter_content(chunk_size=chunk_size):f.write(data)size += len(data)sys.stdout.write('[Progress]: %0.2f%%' % float(size/content_size*100) + ' ')sys.stdout.flush()else:print response.status_codedef run(self):url = 'https:///aweme/v1/aweme/post/?user_id=%s&count=32&max_cursor=0&aid=1128&_signature=%s&dytk=%s'%(erid,self._signature,self.dytk)url_list = self.handle_url()download_url,title_list = self.get_download_url(url_list)for i in range(len(download_url)):url = download_url[i]title = title_list[i]self.videodownloader(url,title)if __name__ == '__main__':#创建对象#传入三个参数,user_id,_signature,dytkdouyin_spider =douyin_spider('95870186531','RFE1JhAbHxD7J8TA9HCumURRNT','539f2c59bb57577983b3818b7a7f32ef') douyin_spider.run()print '******DouYin_spider@Awesome_Tang、******'。
python爬取视频教程
爬取视频教程是一项非常有用和流行的技能,在这个数字化时代,互联网上存在着丰富的视频教程资源,使用Python编程语言可以方便地爬取这些视频教程并保存到本地。
以下我将介绍如何使用Python爬取视频教程。
首先,我们需要了解一些基本的爬虫概念和工具。
Python中最主要的爬虫库是requests和beautifulsoup。
requests可以发送HTTP请求并获取网页内容,beautifulsoup则可以解析网页内容。
我们还可以使用其他的第三方库来进一步处理视频,如FFmpeg、OpenCV等。
接下来,我们需要找到要爬取的目标网站。
可以选择一些专门提供视频教程的网站,如Youtube、B站等。
这些网站提供了API接口,可以方便地获取视频相关的信息。
我们可以使用requests库发送GET请求,获取返回的网页内容。
然后,我们需要在网页中找到视频的链接。
这就需要用到beautifulsoup库,它可以解析HTML文档,并提供了一些简单而强大的方法来提取并操作数据。
我们可以使用beautifulsoup 找到视频标签,并提取其中的链接信息。
接下来,我们可以使用requests库进一步获取视频的内容,并保存到本地。
在请求时,我们需要设置一些请求头(User-Agent、Referer等),以模拟浏览器行为,防止被网站屏蔽。
可以使用requests库的get方法下载视频数据,并使用Python 的文件操作将数据保存到本地文件中。
最后,如果需要进一步处理视频,如转换格式、剪辑、提取关键帧等,可以使用FFmpeg、OpenCV等库进行处理。
FFmpeg
是一个强大的多媒体处理工具,可以进行视频的转码、剪辑等操作。
OpenCV是一个计算机视觉库,可以处理视频帧图像,
提取关键帧等。
总结起来,使用Python爬取视频教程需要以下步骤:选择目
标网站、使用requests库获取网页内容、使用beautifulsoup库
解析网页内容、找到视频链接、使用requests库下载视频、
(可选)使用FFmpeg、OpenCV等库进一步处理视频。
通过以上步骤,我们可以方便地爬取视频教程并保存到本地,进一步实现对视频的处理需求。
这样我们就可以随时随地学习和观看我们感兴趣的视频教程了。
希望这篇文章对你有所帮助!。