#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. Спасибо, я понял это, использовал суп.найди вместо супа.найди_ все.