Найти регулярное выражение, чтобы найти ссылку из HTML - PullRequest
0 голосов
/ 24 октября 2019

Попытка найти ссылку из следующих данных htm внутри hls: с помощью regex.Пробовал (r"(?<=hls:\s\')(.*)"), но он дает частичную ссылку https://mvd4.ddns.me:443/1vod5n/almajde-ben-zaher-1, Есть предложения?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>RikTak Video Player - Version 1</title>
    <script src="https://cdn.radiantmediatechs.com/rmp/5.2.1/js/rmp.min.js"></script>
    <style>
        body {
            margin: 0;
        }
    </style>
</head>
<body>
<div id="rmpPlayer"></div>
<script>
    var bitrates = {
         hls: 'https://mvd4.ddns.me:443/1vod5n/almajde-ben-zaher-1.mp4/playlist.m3u8?wmsAuthSign=c2VydmVyX3RpbWU9MTAvMjQvMjAxOSA3OjUyOjA2IEFNJmhhc2hfdmFsdWU9WjIxaHNDcTZDMXEzTmM4ZTFTU0RIUT09JnZhbGlkbWludXRlcz02MA=='
    };

        var schedule = {
       preroll: [
            'https://googleads.g.doubleclick.net/pagead/ads?ad_type=video_image&client=ca-video-pub-1231661633440980&description_url=https%3A%2F%2Fwww.farfeshplus.com&channel=7962520214&videoad_start_delay=0&hl=ar'
            ],
        midroll: [

            [600,'https://googleads.g.doubleclick.net/pagead/ads?ad_type=video_text_image&client=ca-video-pub-1231661633440980&description_url=https%3A%2F%2Fwww.farfeshplus.com&channel=7962520214&videoad_start_delay=0&hl=ar'],
            [1200,'https://googleads.g.doubleclick.net/pagead/ads?ad_type=video_text_image&client=ca-video-pub-1231661633440980&description_url=https%3A%2F%2Fwww.farfeshplus.com&channel=7962520214&videoad_start_delay=0&hl=ar'],

            [1800,'https://googleads.g.doubleclick.net/pagead/ads?ad_type=video_text_image&client=ca-video-pub-1231661633440980&description_url=https%3A%2F%2Fwww.farfeshplus.com&channel=7962520214&videoad_start_delay=0&hl=ar']
            ],
        postroll: [
            'https://googleads.g.doubleclick.net/pagead/ads?ad_type=video_text_image&client=ca-video-pub-1231661633440980&description_url=https%3A%2F%2Fwww.farfeshplus.com&channel=7962520214&videoad_start_delay=0&hl=ar'
        ]
    };
        var settings = {
        licenseKey: 'Kl8lNHNrNzkyY3M5dj9yb201ZGFzaXMzMGRiMEElXyo=',
        bitrates: bitrates,
        delayToFade: 3000,
        width: 750,
        height: 440,
        skin: 's4',
        hlsJSMaxBufferSize: 0,
        hlsJSMaxBufferLength: 240,
        poster: 'https://www.farfeshplus.com/ramadanimages/1443.jpg',
        ads: true,
        adSchedule: schedule
    };
    var elementID = 'rmpPlayer';
    var rmp = new RadiantMP(elementID);
    rmp.init(settings);
</script>
</body>
</html>

1 Ответ

0 голосов
/ 24 октября 2019

Я бы использовал Beautiful Soup для первого разбора и получения содержимого для тега <script>. Затем с помощью regex извлеките нужную ссылку.

from bs4 import BeautifulSoup

soup = BeautifulSoup(page.content, 'html.parser')
script = soup.find_all('script')[0]
m = re.search(r"var bitrates = \{\s+hls: '([^']+)'\s+\};", script)
print(m.group(1))

Проблема с использованием одного регулярного выражения в том, что вам действительно нужен синтаксический анализатор для обработки произвольно вложенного содержимого HTML. Regex не был предназначен для этой задачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...