Python爬虫批量爬取下载抖音视频代码实例

  

这篇文章主要为大家详细介绍了python批量爬取下载抖音视频,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  

 Python爬虫批量爬取下载抖音视频代码实例

  

<强>项目源码展示:

        '''   在学习过程中有什么不懂得可以加我的   python学习交流扣扣群,934109170   群里有不错的学习教程,开发工具与电子书籍。   与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容。   '''   # - * -编码:utf - 8 - *   从contextlib进口关闭   导入请求、json、再保险、操作系统、系统,随机的   从ipaddress进口ip_address   从子流程导入Popen,管道   进口urllib   类DouYin(对象):   def __init__(自我,宽度=500,高度=300):   ”“”   抖音应用视频下载   ”“”   rip=ip_address (“0.0.0.0”)   而rip.is_private:   rip=ip_address (“。”。加入(地图(str(随机的。randint(0, 255) _的范围(4)))))   自我。头={   “接受”:“text/html、application/xhtml + xml应用程序/xml; q=0.9,图像/webp图像/apng */*; q=0.8”,   “接受编码”:gzip压缩,br,   “接收语言”:应用,zh型;q=0.9,   “杂注”:“no - cache”,   cache - control: no - cache,   “upgrade-insecure-requests”:“1”,   “用户代理”:“Mozilla/5.0 (Linux;U;Android 5.1.1;应用;MI 4 s构建/LMY47V) AppleWebKit/537.36 (KHTML,像壁虎)/4.0版本Chrome/53.0.2785.146移动Safari 537.36小米/MiuiBrowser/9.1.3’,   “X-Real-IP”: str (rip),   “X-Forwarded-For”: str (rip),   }   def get_video_urls(自我、user_id type_flag=f):   ”“”   获得视频播放地址   参数:   user_id:查询的用户UID   返回:   video_names:视频名字列表   video_urls:视频链接列表   昵称:用户昵称   ”“”   video_names=[]   video_urls=[]   share_urls=[]   max_cursor=0   has_more=1   我=0   share_user_url=' https://www.douyin.com/share/user/%s ' % user_id   share_user=请求。get (share_user_url header=self.headers)   而share_user。status_code !=200:   share_user=请求。get (share_user_url header=self.headers)   _dytk_re=re.compile (r”dytk \ s *: \ s * (. +)”)   dytk=_dytk_re.search (share_user.text) .group (1)   _nickname_re=re.compile (r & lt; p class=钡拇潞拧白4?+ & # 63;)& lt; \/p>”)   昵称=_nickname_re.search (share_user.text) .group (1)   urllib.request.urlretrieve (' https://raw.githubusercontent.com/Jack-Cherish/python-spider/master/douyin/fuck-byted-acrawler.js ', ' fuck-byted-acrawler.js ')   试一试:   Popen(“节点”、“v”, stdout=管,stderr=管).communicate ()   除了(OSError IOError)那么错:   打印('请先安装节点。js: https://nodejs.org/?   西斯退出()   user_url_prefix=' https://www.douyin.com/aweme/v1/aweme/favorite '如果type_flag==' f '其他' https://www.douyin.com/aweme/v1/aweme/post '   打印(“解析视频链接中”)   虽然has_more !=0:   过程=Popen([“节点”、“fuck-byted-acrawler。js的str (user_id)], stdout=管,stderr=管)   _sign=process.communicate () [0] .decode () .strip .strip (“\ n”) (“\ r”)   user_url=user_url_prefix + '/& # 63; user_id=% s& max_cursor=% s&数=21,援助=1128,_signature=% s& dytk=% s ' % (user_id、max_cursor _sign, dytk)   要求=请求。get (user_url header=self.headers)   同时要求。status_code !=200:   要求=请求。get (user_url header=self.headers)   html=json.loads (req.text)   试一试:   虽然html [' aweme_list ']==[]:   我+ 1=sys.stdout。写(“已重新链接“+ str (i) +“次(若超过100次,请按ctrl + c强制停止再重来)”+“\ r”)   sys.stdout.flush ()   过程=Popen([“节点”、“fuck-byted-acrawler。js的str (user_id)], stdout=管,stderr=管)   _sign=process.communicate () [0] .decode () .strip .strip (“\ n”) (“\ r”)   user_url=user_url_prefix + '/& # 63; user_id=% s& max_cursor=% s&数=21,援助=1128,_signature=% s& dytk=% s ' % (user_id、max_cursor _sign, dytk)   要求=请求。get (user_url header=self.headers)   同时要求。status_code !=200:   要求=请求。get (user_url header=self.headers)   html=json.loads (req.text)   除了:   通过   我=0   对于每个在html (“aweme_list”):   试一试:   url=' https://aweme.snssdk.com/aweme/v1/play/& # 63; video_id=% s&行=0,比率=720 p& media_type=4, vr_type=0, test_cdn=None& improve_bitrate=0”   uri=每个['视频'][' play_addr '] (“uri”)   video_url url=% uri   除了:   继续   share_desc=每个[' share_info '] [' share_desc ']   如果os.name==皀t”:   在r c \/: * & # 63;”, & lt的在|”:   昵称=昵称。替换(c) .strip () .strip (“\”。)   share_desc=share_desc。替换(c) .strip ()   share_id=每个(“aweme_id”)   如果share_desc['抖音——原创音乐短视频社区’,‘TikTok’,”):   video_names。追加(share_id + mp4)   其他:   video_names。追加(share_id +“-”+ share_desc + mp4)   share_urls.append(每个[' share_info '] [' share_url '])   video_urls.append (video_url)   max_cursor=html (“max_cursor”)   has_more=html (“has_more”)   返回video_names video_urls share_urls,昵称   def get_download_url(自我、video_url watermark_flag):   ”“”   获得带水印的视频播放地址   参数:   video_url:带水印的视频播放地址   返回:   download_url:带水印的视频下载地址   ”“”   #带水印视频   如果watermark_flag==True:   download_url=video_url。替换('/播放/','/playwm/')   #无水印视频   其他:   download_url=video_url。替换('/playwm/', '/播放/')   返回download_url   def video_downloader(自我、video_url video_name watermark_flag=False):   ”“”   视频下载   参数:   video_url:带水印的视频地址   video_name:视频名   watermark_flag:是否下载带水印的视频   返回:   无   ”“”   大?0   video_url=自我。get_download_url (video_url watermark_flag=watermark_flag)   关闭(请求。get (video_url header=自我。头,流=True))作为回应:   chunk_size=1024   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Python爬虫批量爬取下载抖音视频代码实例