найти ссылки, используя bs4 - PullRequest
0 голосов
/ 12 апреля 2020

Я пытаюсь получить ссылки из тега скрипта, используя bs4

вот тег, который я хочу очистить ссылки от

html = """<script type="text/javascript">var player = new Clappr.Player({
    sources: ["https://example.com/zx5x4vxkb52dxcne4zwsbbn6rpafhxnsodnlcjifkdqatbvqbc5axyv4dpuq/v.mp4","https://example.com/zx5x4vxkb52dxcne4zwsbbn6rpafhxnsodnlcjifkyyarbvqbc5dtluomera/v.mp4"]

    poster: "image.jpg",
    width: "100%",
height: "100%",
disableVideoTagContextMenu: true,
    parentId: "#vplayer",
    events: {
    onReady: function() {  },
    }"""

как я могу получить ссылки в "источниках"?

link1 = "https://example.com/zx5x4vxkb52dxcne4zwsbbn6rpafhxnsodnlcjifkdqatbvqbc5axyv4dpuq/v.mp4"

link2 = "https://example.com/zx5x4vxkb52dxcne4zwsbbn6rpafhxnsodnlcjifkyyarbvqbc5dtluomera/v.mp4"

ссылки совпадают, поэтому мне нужна только 1 из них

примечание: имя doamin меняется каждый раз, поэтому я не могу искать example.com

1 Ответ

1 голос
/ 12 апреля 2020
import re
html = """<script type="text/javascript">var player = new Clappr.Player({
    sources: ["https://example.com/zx5x4vxkb52dxcne4zwsbbn6rpafhxnsodnlcjifkdqatbvqbc5axyv4dpuq/v.mp4","https://example.com/zx5x4vxkb52dxcne4zwsbbn6rpafhxnsodnlcjifkyyarbvqbc5dtluomera/v.mp4"]

    poster: "image.jpg",
    width: "100%",
height: "100%",
disableVideoTagContextMenu: true,
    parentId: "#vplayer",
    events: {
    onReady: function() {  },
    }"""

match = re.findall(r"https.+?mp4", html)

print(match)

Выход:

['https://example.com/zx5x4vxkb52dxcne4zwsbbn6rpafhxnsodnlcjifkdqatbvqbc5axyv4dpuq/v.mp4', 'https://example.com/zx5x4vxkb52dxcne4zwsbbn6rpafhxnsodnlcjifkyyarbvqbc5dtluomera/v.mp4']

Или

match = re.search(r"sources: (\[.+\])", html).group(1)

print(match)

Выход:

["https://example.com/zx5x4vxkb52dxcne4zwsbbn6rpafhxnsodnlcjifkdqatbvqbc5axyv4dpuq/v.mp4","https://example.com/zx5x4vxkb52dxcne4zwsbbn6rpafhxnsodnlcjifkyyarbvqbc5dtluomera/v.mp4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...