1.python爬虫爬取视频网站的视频可下载的源url

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


一、爬取的源网站

http://www.lzizy9.com/

在这里以电影片栏下的动作片为例来爬取。

可以看到视频有多页,因此需要多页爬取。

二、实现代码

bash 复制代码
import requests
from bs4 import BeautifulSoup
import os

if __name__=='__main__':
    # headers是解决requests请求反爬的方法之一,相当于我们进去这个网页的服务器本身,假装自己本身在爬取数据。
    # 对反爬虫网页,设置headers的信息可以让我们的爬取操作模拟成浏览器取访问网站。
    # 当访问太频繁的时候,容易被服务器禁止访问,这时可以设置多个代理头,通过随机选择某一个代理头来爬取数据,这样可以避免使用同一个头频繁访问的封禁问题。
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
    }

    headers2 = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36',

    }
    # 通过requests.get方法可以发送GET请求
    html_doc = requests.get(f"http://www.lzizy9.com/index.php/vod/type/id/6/page/1.html", headers=headers)

    # BeautifulSoup将复杂的HTML文件转化为一个Python对象,使得用户可以更方便地解析、搜索和修改HTML内容。
    # html_doc.text获取网页的HTML内容
    soup = BeautifulSoup(html_doc.text, 'html.parser')

    # 使用findALL提取网页中的信息,其返回的是一个可迭代的对象,具体的用法自行搜索
    # 我们要爬取所有的视频,需要识别视频一共有多少页,其返回结果为['/index.php/vod/type/id/6/page/61.html'],根据参数我们得知一共有61页视频
    href_values = [link['href'] for link in soup.findAll('a', title='尾页')]
    # 获取页数,并将字符串string转化为int整数
    end_page = int(href_values[0][30:32])

    # 遍历每一页来获取视频的url链接
    for page in range(1, end_page+1):
        # 此处获取网页信息与上面类似
        html_page = requests.get(f"http://www.lzizy9.com/index.php/vod/type/id/6/page/{page}.html", headers=headers)
        page_values = BeautifulSoup(html_page.text, "html.parser")

        # 找视频播放的链接,其在标签为a,class为"module-item-title"的下面
        href_players = [link['href'] for link in page_values.findAll('a', attrs={"class": "module-item-title"})]
        for href in href_players:
            # 寻找播放界面的规律,发现其除了id号不同以外,其他的都一样,从上面获取的视频播放链接中提取id号
            id = href[25:30]
            url = f"http://www.lzizy9.com/index.php/vod/play/id/{id}/sid/1/nid/1.html"
            html_player = requests.get(url, headers=headers)
            player_values = BeautifulSoup(html_player.text, "html.parser")
            href_video = player_values.findAll('iframe')    # 注意这里是没有获取到信息的,因为HTML源码中的iframe标签是js加载的,因此通过requests无法获取,这里大家可以想别的办法获取视频的真实链接
            print(href_video)

注意这个代码在最后一次捕获标签iframe时,并没有捕捉到,这是因为爬取的标签不在源HTML源代码中,而是通过js加载进来的,我目前也是第一次碰到这种情况,不过大部分视频网站都是可以正常爬取的,在这里只是一个爬取模板,这个爬取可以用到很多网站。

总结

最后获取的是视频的下载地址url,如果要爬取视频还需要写一个视频下载脚本,可以看后面的教程。

相关推荐
uppp»31 分钟前
深入理解 Java 反射机制:获取类信息与动态操作
java·开发语言
Yan-英杰33 分钟前
百度搜索和文心智能体接入DeepSeek满血版——AI搜索的新纪元
图像处理·人工智能·python·深度学习·deepseek
weixin_307779132 小时前
Azure上基于OpenAI GPT-4模型验证行政区域数据的设计方案
数据仓库·python·云计算·aws
玩电脑的辣条哥3 小时前
Python如何播放本地音乐并在web页面播放
开发语言·前端·python
多想和从前一样5 小时前
Django 创建表时 “__str__ ”方法的使用
后端·python·django
ll7788115 小时前
LeetCode每日精进:20.有效的括号
c语言·开发语言·算法·leetcode·职场和发展
小喵要摸鱼7 小时前
【Pytorch 库】自定义数据集相关的类
pytorch·python
bdawn7 小时前
深度集成DeepSeek大模型:WebSocket流式聊天实现
python·websocket·openai·api·实时聊天·deepseek大模型·流式输出
Jackson@ML7 小时前
Python数据可视化简介
开发语言·python·数据可视化
mosquito_lover17 小时前
怎么把pyqt界面做的像web一样漂亮
前端·python·pyqt