Попытка найти ссылку из следующих htm-данных внутри hls: с помощью regex.Tried (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>
0
Ibtsam Ch 24 Окт 2019 в 13:54
1
Думаю, должно работать правильно? regex101.com/r/FCQL63/1
 – 
The fourth bird
24 Окт 2019 в 13:57
Может, вам стоит показать код, который вы пробовали. Как сказано в предыдущем комментарии, регулярное выражение работает нормально.
 – 
Amessihel
24 Окт 2019 в 14:01

1 ответ

Я бы использовал 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 не был предназначен для этой задачи.

0
Tim Biegeleisen 24 Окт 2019 в 14:01
Он печатает оставшуюся ссылку на новой строке :(
 – 
Ibtsam Ch
24 Окт 2019 в 14:38
Я хочу, чтобы весь URL был в одной строке. Что я должен делать
 – 
Ibtsam Ch
24 Окт 2019 в 16:04
Какой вывод дает вам мой скрипт в настоящее время и почему он неверен?
 – 
Tim Biegeleisen
24 Окт 2019 в 16:06
Он не дает неправильного вывода, он просто печатает ссылку после "mvd4 .ddns.me: 443 / 1vod5n / almajde-ben-zaher-1 "на новую строку. Я просто ссылку в целом на одной строке. Я спрашивал, что мне для этого делать?
 – 
Ibtsam Ch
24 Окт 2019 в 16:10
Пожалуйста, расскажите мне, как я могу это сделать?
 – 
Ibtsam Ch
24 Окт 2019 в 16:27