【爬虫实战】

如何不给视频增加播放量而获取内容呢?

当然是使用爬虫啦!!!

url='https://www.你猜这里是什么.com/video/BV1434y1a7CB?spm_id_from=333.999.0.0&vd_source=92f98bb99f56daa73d96bdb9d5141097'
headers={
    'referer': 'https://t.你猜这里是什么.com/?tab=video',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'
}

首先是确定爬取的网址,以及设置好请求头,除了最基础的“User—Agent”一般爬取图片和视频都需要添加“Referer”

from requests_html import HTMLSession
session=HTMLSession()#将其实例化
response=session.get(url)#这里没用到请求头对不对!!!加不加都可以,请求头是下面爬取视频的时候用的
response.html.render()#解析所获得的内容中的js

这里我使用requests_html来爬取,因其实本人更喜欢requests,但是requests_html可以解析js, 经观察发现,视频的链接在head标签下的script标签中,所以需要解析js.找不到链接的同学可以在开发者模式中搜索"playinfo",视频网站应该都大同小异.

import json
url_data=response.html.xpath('/html/head/script[4]/text()')
url_1=url_data[0].replace('window.__playinfo__=','')
url_2=json.loads(url_1)

接着是爬取蕴含链接的内容,由上图可知除了开头的"window.__playinfo__="以外,其他都是链接,所以代码的第三行便是将其剔除,留下了json格式的链接,第四行利用json库解析变成字典方便我们提取链接.

sound_url=url_2['data']['dash']['audio'][0]['baseUrl']
video_url=url_2['data']['dash']['video'][0]['baseUrl']

大部分网站的视频是音画分离,所以需要单独提取画面和声音的链接.

import requests
sound=requests.get(sound_url,headers=headers).content#获取字节内容
video=requests.get(video_url,headers=headers).content
with open('video.mp4','wb') as F:#以二进制的形式写入
    F.write(video)
with open('sound.mp3','wb') as F:
    F.write(sound)

接着用requests来分别爬取视频和声音,不要问我为什么不继续用requests_html 了,因为我不太会用requests_html,内容处理的过程有点反麻烦因为我对requests爱得深沉.

 然后呢,有了声音和视频了,我们就可以一边看画面一边点开音频完成我们的目的啦.

才怪!试了好多次才勉强音画同步,所以我们要把视频和音频合在一起,怎么做呢?

用Pr就可以了!!!

 但是有点麻烦,我想白嫖阿婆主得会爬虫,还要会Pr?

import subprocess
COMMAND=f'ffmpeg -i video.mp4 -i sound.mp3 -c:v copy -c:a aac -strict experimental bilibili.mp4'
subprocess.run(COMMAND,shell=True)

 当然不用,只要贴上上面这段代码就行,一切都会自动弄好,不过要安装subprocess,具体的话随便搜一下就有很详细的教程.不会科学上网的我下载花了一个多小时.

第二行的具体格式为:

随便起个名=f'ffmpeg -i 视频文件 -i 音频文件 -c:v copy -c:a aac -strict experimental 合成文件'

 运行结果一片红也不用怕,正常现象.

如果视频过长的话可能画面会分为几个部分,只需要分别爬取再加起来就可以了.(有这闲功夫我直接在网站点开看不就好了)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值