当前位置: 首页 > wzjs >正文

网站设计 网站推广 网站优化58同城最新招聘

网站设计 网站推广 网站优化,58同城最新招聘,无锡网站网页设计,永康市建设局网站下面讲一下怎么爬取视频,这个还是比小白的稍微有一点绕的 首先打开网址:aHR0cDovL3d3dy5wZWFydmlkZW8uY29tL3BvcHVsYXJfNA 首页 看一下: 有一个标题和一个href,href只是一个片段,待会肯定要拼接, 先找一…

下面讲一下怎么爬取视频,这个还是比小白的稍微有一点绕的

首先打开网址:aHR0cDovL3d3dy5wZWFydmlkZW8uY29tL3BvcHVsYXJfNA==

首页

看一下:

image-20250321164609364

有一个标题和一个href,href只是一个片段,待会肯定要拼接,

先找一下这个页面有没有视频链接,很明显找不着

视频页

进入视频页

image-20250321164850577

打开元素检查看一下,也是找不到下载视频链接的,所以肯定是一个动态加载的,我们可以打开检查,打开视频,观察一下,、

打开视频后,这个链接元素才被加载出来

image-20250321165154818

试了一下可以正常访问的

找元素

但是,我们分析一下这个链接,

这个部分

cont-1798951-16047499-hd.mp4

这个第一个数,就是我们在首页元素页找的视频码,

但是第二个数呢?

我找了半天没在元素中找到,

刚开始我以为它跟视频封面图用的一个链接

我以为用的这个

image-20250321165522210

但是拼接了之后访问的不对

那没办法了,元素中找不到就找网络包

可以看到这个包下的这个响应返回很像一个正常的url

image-20250321165718829

那就试一下呗,

可以发现。。。。是不行的

image-20250321165908279

那么这个url一定是假的

我们对比一下真的url与假的url

image-20250321170114803

对比一下,发现只有cont和第一个参数不一样,那么只要把这个响应获取到之后构造为第一个参数就行了

获取请求参数

image-20250321170434801

这个请求的参数有两个,第一个就是首页获取的id,第二个的话,可以刷新一下其他视频的接口,看下区别

image-20250321171059654

它竟然不一样!!!

那。。。。总不会是加密生成的参数吧,我看也不像,这时候不妨随便改一下这个参数,看看能不能正常返回值

幸运的是,没有问题

image-20250321171227136

但是这里请求的时候要注意,要加上原来的网址名称,加到headers里

接口请求code

import requestsheaders = {"Referer": "https://www.pearvideo.com/video_1798952","User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36",
}
url = "https://www.pearvideo.com/videoStatus.jsp?contId=1798952&mrd=0.221312412434"
response = requests.get(url, headers=headers)print(response.text)
print(response)

那响应也拿到了,整个逻辑就非常清晰了

首页找到id和文章title -> 使用id拼接访问视频详情页 -> 详情页请求接口获取参数 -> 参数拼接请求

那全部代码

首页代码和面一样,脱敏处理了一下

import os
import requests
from lxml import etree
import reurl = "aHR0cDovL3d3dy5wZWFydmlkZW8uY29tL3BvcHVsYXJfNA=="
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.79","Referer": "http://www.pearvideo.com/popular_4"
}
def get_response(url,i):headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.79","Referer": f"http://www.pearvideo.com/video_{i}"}res_tail = requests.get(url, headers=headers)return res_tail
def get_name(url):res = requests.get(url)html = etree.HTML(res.text)name = html.xpath('//*[@class="video-tt"]/text()')return name
if __name__ == '__main__':# 获取页面内容res = requests.get(url, headers=headers)html = etree.HTML(res.text)hrefs = html.xpath('//*[@class="actplay"]/@href')for i in hrefs:i = i.split('_')[1]url=f"http://www.pearvideo.com/videoStatus.jsp?contId={i}&mrd=0.3239946009256476"res_tail=get_response(url,i)json_data = res_tail.json()video_url = json_data['videoInfo']['videos']['srcUrl']url_list = video_url.replace(video_url.split("/")[6].split("-")[0],"cont-"+i)print(url_list)#下载视频video_res = requests.get(url_list, headers=headers)if video_res.status_code == 200:# 保存视频name_url=f"http://www.pearvideo.com/video_{i}"print(name_url)video_name = str(get_name(name_url))with open(video_name, 'wb') as f:f.write(video_res.content)print(f"视频 {video_name} 下载完成")else:print(f"下载失败,状态码: {video_res.status_code}")

image-20250321180306723

那这就没问题了

但是这样只能下载10个视频,因为视频翻是动态加载的,我们可以看一下它的网络请求包

image-20250321181515371

这是4页的请求接口,试了一会,发现是start的值是视频从第几个开始,sort现在还不太明白是什么意思

知道的可以说一下

那其他就没什么问题了

上代码

import os
import requests
from lxml import etree
import redef get_response(url,i):headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.79","Referer": f"http://www.pearvideo.com/video_{i}"}res_tail = requests.get(url, headers=headers)return res_tail
def get_name(url):res = requests.get(url)html = etree.HTML(res.text)name = html.xpath('//*[@class="video-tt"]/text()')return name
if __name__ == '__main__':# 获取页面内容for page in range(0, 2):url = ZiJodHRwOi8vd3d3LnBlYXJ2aWRlby5jb20vcG9wdWxhcl9sb2FkaW5nLmpzcD9yZXFUeXBlPTQxJmNhdGVnb3J5bGQ9JnN0YXJ0PXtwYWdlKjEwfSZzb3J0PXtwYWdlKjEwfSZtcmQ9MC42Nzc4MjgyNDUwMTk5MDYires = requests.get(url)html = etree.HTML(res.text)hrefs = html.xpath('//*[@class="actplay"]/@href')for i in hrefs:i = i.split('_')[1]url=f"http://www.pearvideo.com/videoStatus.jsp?contId={i}&mrd=0.3239946009256476"res_tail=get_response(url,i)json_data = res_tail.json()video_url = json_data['videoInfo']['videos']['srcUrl']url_list = video_url.replace(video_url.split("/")[6].split("-")[0],"cont-"+i)print(url_list)#下载视频video_res = requests.get(url_list)if video_res.status_code == 200:# 保存视频name_url=f"http://www.pearvideo.com/video_{i}"print(name_url)video_name = str(get_name(name_url))+'.mp4'with open(video_name, 'wb') as f:f.write(video_res.content)print(f"视频 {video_name} 下载完成")else:print(f"下载失败,状态码: {video_res.status_code}")

image-20250321182739846

脱敏处理,有加密的url base64解密一下就可以

http://www.dtcms.com/wzjs/757326.html

相关文章:

  • 模板网站首页设计软件开发工作稳定吗
  • 网站开发合同里的坑代码编辑器
  • 用wix做外贸网站丽江网页制作公司
  • 广西南宁网站建设公司网站开发和网络安全
  • 网页设计图片如何显示嘉兴做网站seo的
  • 昆明云南微网站建设营销型网站费用
  • wordpress建站模板下载住房和建设建设局网站
  • 网站建站代理1000套网站源码
  • 建站教程图解买模板做的网站表单数据在哪里看
  • 宁德网站推广怎么建网站平台卖东西
  • 六安网站开发网销外包
  • 电子商务网站建设论文网站建设 协议书 doc
  • 网站背景图片怎么做wordpress 虚拟资源
  • 广宁网站建设公司网站推广软件排名
  • wordpress 响应式 企业网站百度关键词搜索查询
  • 成都专业制作网站公司不用安装即可玩的游戏
  • wordpress 多站点 固定链接做印刷去哪个网站找工作
  • 服务器主机 网站吉林建设集团网站
  • 想自己做一个网站女生学市场营销好吗
  • 松江郑州阳网站建设宁波专业网站建设怎么做
  • 国际阿里网站首页建设discuz wordpress主题
  • 广州住建官方网站微信公众号手机登录入口
  • 南沙区建设局网站出国看病网站开发
  • 四川住房与城乡建设部网站长沙房地产公司有哪些
  • 汽车音响网站建设高端的镇江网站建设
  • 零基础源码建设网站知乎网页版
  • 企业流程管理系统搜索引擎关键词排名优化
  • 网站代理最快最干净百度旗下的所有产品
  • 弹出全屏视频网站怎么做杭州思拓网站建设
  • 杭州企业网站建设建设网站行业云