Я хочу заменить html-контент своим собственным контентом

#python #beautifulsoup #replace #attributes #tags

Вопрос:

Ниже приведен html-код, и я хочу заменить содержимое на » Это html-код «. Код выполняется без ошибок, но ничего не изменилось, и содержимое остается прежним.

Я хочу заменить «Разработчик полного стека». с надписью «Это html-код»

 soup='<meta content="A full stack developer." name="description"/>'
 

Мой код:

 for i in soup.find_all("meta", "description"):

    var1=i.string
    var1.replace_with(var1.replace(var1, 'This is html code '))
    print(var1)
    
print(soup)
 

С помощью описанного выше метода я не получаю ошибку, но атрибут содержимого остается прежним.

Я также пробовал разные способы, но я получаю эту ошибку:

объект ‘str’ не имеет атрибута ‘replace_with’

Может ли кто-нибудь подсказать мне, как заменить атрибут содержимого вашим собственным?

Ответ №1:

Чтобы получить доступ к атрибуту тега, используйте [ ] :

 from bs4 import BeautifulSoup

html_doc = '<meta content="A full stack developer." name="description" />'
soup = BeautifulSoup(html_doc, "html.parser")

# replace the attribute "content":
soup.find("meta", {"name": "description"})["content"] = "This is html code"
print(soup)
 

С принтами:

 <meta content="This is html code" name="description"/>
 

Комментарии:

1. Теперь я получаю эту ошибку: индексы списка должны быть целыми числами или срезами, а не str

2. Спасибо, я понял это, использовал суп.найди вместо супа.найди_ все.