门户网站中综合性程度高的是,广告联盟挂机,如何查找网站死链,福州电商网站建设一、抓包分析
1.进入A站进行抓包分析
进入一个页面#xff0c;右点击鼠标按钮#xff0c;点击检查 接着点击network#xff0c;点击Fetxh/XHR,然后刷新网页#xff0c;得到下面的页面 发现其中有许多d595开头的文件#xff0c;它们是ts文件#xff0c;点击其中一个。在…一、抓包分析
1.进入A站进行抓包分析
进入一个页面右点击鼠标按钮点击检查 接着点击network点击Fetxh/XHR,然后刷新网页得到下面的页面 发现其中有许多d595开头的文件它们是ts文件点击其中一个。在General中复制其requests URL在浏览器打开会自动下载一个文件保存为ts,用视频打开发现是一个三四秒的视频。复制其中的一部分进行搜索。 点击搜索中的最后一个包查看这 个包点击preview,可以得到我们想要的下载ts的地址。 现在的问题来到如何找到这个包的url最后可以在源代码中找到这个包的url。
2.爬虫步骤分解
首先访问该页面源代码提取到含有视频ts格式地址的包的url,然后访问这个url,提取所有的视频ts地址然后对视频ts地址进行访问保存视频最后将视频合成一个。
二、代码展现与讲解
import re
import requests
import time
import os
import zipfile
from tqdm import tqdmac_id input(请输入你想要下载的视频ID)
url fhttps://www.acfun.cn/v/{ac_id} # 网页源代码的url地址
headers {User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
}
response requests.get(urlurl,headersheaders) # 得到网页源代码m3u8_url re.findall(backupUrl(.*?)\],response.text)[0].replace(,).split(\\)[2] # 利用正则提取我们想要抓取的包的url
title re.findall(title (.*?) - AcFun弹幕视频网 - 认真你就输啦 \(\?ω\?\)ノ- \( ゜- ゜\)つロ/title,response.text)[0] # 获取视频的名称
m3u8_data requests.get(urlm3u8_url,headersheaders).text # 获取报的内容
m3u8_data re.sub(#EXTM3U,,m3u8_data) # 利用正则剔除无用的内容
m3u8_data re.sub(#EXT-X-VERSION:\d,,m3u8_data)
m3u8_data re.sub(#EXT-X-TARGETDURATION:\d,,m3u8_data)
m3u8_data re.sub(#EXT-X-MEDIA-SEQUENCE:\d,,m3u8_data)
m3u8_data re.sub(#EXTINF:\d\.\d,,,m3u8_data)
m3u8_data re.sub(#EXT-X-ENDLIST,,m3u8_data)filename f{title}\\ # 生成一个文件夹保存视频
if not os.path.exists(filename):os.mkdir(filename)
m3u8_data m3u8_data.split()# 以空格分割 # 分割后将字符串转化为列表
print(正在下载ts文件内容请稍后..........)for link in tqdm(m3u8_data):link_url https://ali-safety-video.acfun.cn/mediacloud/acfun/acfun_video/link # 观察ts的下载地址对url进行补全link_name link.split(.)[1] # 获取每一个ts的名称link_content requests.get(urllink_url,headersheaders).content #以二进制保存视频with open(filenamelink_name.ts,modewb) as f:f.write(link_content)print(ts视频片段下载完成.........)三、总结
1.学到一个库tqdm的使用
2.m3u8视频是分成许多部分的要找到那个含有所有部分url的包然后就是找这个包的url
3.合成视频使用zipfile库
files os.listdir(filename) # 获取文件夹下所有的小视频
with zipfile.ZipFile(filenametitle.mp4,modew) as zz.write(content)