Я использую BeautifulSoup4 для синтаксического анализа HTML-строки в структурированный объект, но для каждого HTML-элемента (например,soup.body.title) я хотел, чтобы был атрибут с именем embed (например,soup.body.title.embed).< /p>
Поэтому я создал дочерние классы для Tag и BeautifulSoup с добавленным атрибутом embed, и хотя тип объекта корневого узла — EmbedSoup, который, как я и предполагал, является типом Soup.body< /code> — это bs4.element.Tag вместо EmbedTag.
Как убедиться, что все элементы дерева BeautifulSoup имеют тип EmbedTag, а не bs4.element.Tag? Есть ли другое решение этой проблемы?
class EmbedTag(Tag):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.embed = None # Initialize the embed attribute to None
class EmbedSoup(BeautifulSoup):
def __init__(self, *args, **kwargs):
kwargs['element_classes'] = {'tag': EmbedTag}
super().__init__(*args, **kwargs)
# Parse the HTML with the custom BeautifulSoup class
soup = EmbedSoup(html_content, 'html.parser')
type(soup) --> EmbedSoup
type(soup.body) --> bs4.element.Tag
Подробнее здесь: https://stackoverflow.com/questions/786 ... nt-tag-cla
Как заставить BeautifulSoup использовать мой собственный класс вместо класса bs4.element.Tag, который он использует для ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
`.find('li')` для объекта `bs4.element.Tag` дает None, хотя тег `
- ` существует внутри супа
Anonymous » » в форуме Python - 0 Ответы
- 86 Просмотры
-
Последнее сообщение Anonymous
-