Прежде всего вы должны получить свой элемент div
, и есть много способов сделать это, но поскольку у вас есть действительно определенный класс, этого достаточно (здесь предполагается, что ваш HTML-код хранится в переменной htmlSource
:
soup = BeautifulSoup(htmlSource, "html.parser")
divElement = soup.select_one('div.flex-embed-content.flex-embed-cover-image')
Теперь вы должны взять атрибут style
и отфильтровать его по URL, и я предлагаю использовать регулярное выражение, и таким образом у вас не будет проблем с непредвиденными элементами, добавленными к стилю overtime.:
pattern = r"(?<=url\().*(?='\))"
url = re.search(pattern, divElement["style"]).group(0) # The group(0) is used to recover the whole match
Содержимое (?<=TEXT_BEFORE)
в регулярном выражении предполагает, что наше совпадение начинается с этого содержимого TEXT_BEFORE, но не включает его в совпадение ( утверждение lookbegind ), а также(?=TEXT_AFTER)
говорит об обратном и соответствует только в том случае, если соответствие следует за TEXT_AFTER ( прогнозное утверждение )
Таким образом, полный код будет:
from bs4 import BeautifulSoup
import re
soup = BeautifulSoup(html, "html.parser")
divElement = soup.select_one('div.flex-embed-content.flex-embed-cover-image')
pattern = r"(?<=url\().*(?='\))"
url = re.search(pattern, divElement["style"]).group(0)