Я попробовал следующее, что сработало для меня: идея состоит в том, чтобы получить доступ к источнику страницы с помощью selenium, затем я ищу все строки, начинающиеся с '<', и помещаю их в список, удаляя ' <с самого начала. Затем я перебираю список и для каждого использую <em>value_of_css_property и ищу цвет фона, цвет рамки, цвет фона и изображение. Я знаю, что это не идеально, но делает то, что я искал. Не забудьте удалить дубликаты из списка тегов (поскольку этот метод выдаст список всех свойств css-color каждого тега).
Пример:
url ="someurl"
options = webdriver.ChromeOptions()
options.headless = False
driver = webdriver.Chrome(options=options)
driver.get(url)
list_tags = []
html_source = driver.page_source
txt = re.findall(r'<[a-zA-Z]+', html_source)
for x in txt:
list_tags.append(x.replace('<', ''))
list_tags = list(dict.fromkeys(list_tags))
final_list = []
for i in list_tags:
tag = driver.find_elements_by_tag_name(i)
tag_back_col = []
tag_col = []
tag_img = []
tag_border = []
for j in tag:
back_col = j.value_of_css_property('background-color')
tag_back_col.append(back_col)
col = j.value_of_css_property('color')
tag_col.append(col)
bord = j.value_of_css_property('border-color')
tag_border.append(bord)
img = j.value_of_css_property('background-image')
tag_img.append(img)
final_list .append((i, tag_back_col, tag_col, tag_border, tag_img))
driver.close()
Финальным списком будет список кортежей с именем тега и списками цветов фона, цветов, цветов границ и фона для каждого вхождения этого тега на странице.