使用etree爬取视频

 爬虫常用的几个库中,各有所长,不过目的都是一样的,今天写了个用etree函数的爬虫来爬取视频素材,分享一下

#https://ibaotu.com/shipin/
import requests
from lxml import html  
etree=html.etree


class climb():
    def __init__(self):
        self.url='https://ibaotu.com/shipin/'
        self.hearders={

        }  #测试后发现这个网站不需要header也是可行的

    def get_text(self,num):
        self.url=self.url+'7-0-0-0-0-'+str(num)+'.html'
        print(self.url)
        respond=requests.get(url=self.url)
        html=etree.HTML(respond.content.decode())
        title=html.xpath('//span[@class="video-title"]/text()')
        link=html.xpath('//div[@class="video-play"]/video/@src')
        for i,j in zip(title,link):
            self.down_mp4(i,j)

    def down_mp4(self,name,link):
        file_name=name+'.mp4'
        file=requests.get("http:"+link).content
        path=r"E:\\untitled\\视频\\"+file_name
        print('正在下载视频'+name)
        with open(path,'wb')as f:
            f.write(file)

    def all_main(self):
        num=int(input('请输入要爬取的页数1-223:'))
        for i in range(1,num+1):
            self.get_text(i)
            self.__init__() #初始化了一下url,其实可以用其他方式,比如直接赋值

if __name__ == '__main__':
    run=climb()
    run.all_main()

 

以下为你介绍几种可用于爬取视频资源并实现下载功能的方法及示例代码: ### 简单静态视频爬取示例 如果视频的URL是直接可以从HTML中获取的,可以使用`requests`库进行下载。以下是一个简单示例: ```python import requests # 视频的URL video_url = 'https://example.com/video.mp4' # 发送请求获取视频内容 response = requests.get(video_url, stream=True) # 检查请求是否成功 if response.status_code == 200: # 以二进制写入模式打开文件 with open('video.mp4', 'wb') as f: # 逐块写入视频内容 for chunk in response.iter_content(chunk_size=1024): if chunk: f.write(chunk) ``` ### 动态加载视频爬取示例 若视频资源URL是通过JavaScript动态加载的,可使用`selenium`库。以爆米花搞笑类别视频爬取为例: ```python import time from selenium import webdriver import requests # 初始化浏览器驱动 driver = webdriver.Chrome() # 打开网页 driver.get('https://example.com/popcorn-funny-videos') # 等待广告播放结束(假设广告时长10秒) time.sleep(10) # 获取视频跳转链接(这里需要根据实际情况修改定位方式) video_links = driver.find_elements_by_xpath('//a[@class="video-link"]') for link in video_links: # 获取跳转链接 video_page_url = link.get_attribute('href') # 访问视频页面 driver.get(video_page_url) # 等待视频URL加载(根据实际情况调整等待时间) time.sleep(5) # 获取视频资源URL(这里需要根据实际情况修改定位方式) video_url = driver.find_element_by_xpath('//video[@id="video-player"]').get_attribute('src') # 发送请求下载视频 response = requests.get(video_url, stream=True) if response.status_code == 200: with open('video_{}.mp4'.format(video_links.index(link)), 'wb') as f: for chunk in response.iter_content(chunk_size=1024): if chunk: f.write(chunk) # 关闭浏览器 driver.quit() ``` ### 特定网站视频爬取示例 以爬取某些网站视频视频URL格式为`https://www.pearvideo.com/video_+视频的id`为例: ```python import requests from lxml import etree # 访问网页 url = 'https://www.example.com/video-page' response = requests.get(url) html = response.text # 解析HTML tree = etree.HTML(html) # 获取视频id(这里需要根据实际情况修改xpath) video_ids = tree.xpath('//a[@class="video-item"]/@href') for video_id in video_ids: # 提取真正的id real_id = video_id.split('_')[-1] # 构造视频URL video_url = f'https://www.pearvideo.com/video_{real_id}' # 发送请求下载视频 video_response = requests.get(video_url, stream=True) if video_response.status_code == 200: with open('video_{}.mp4'.format(real_id), 'wb') as f: for chunk in video_response.iter_content(chunk_size=1024): if chunk: f.write(chunk) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值