Как изменить имя тега с помощью BeautifulSoup? Я использую python + BeautifulSoup для анализа HTML-документа. Теперь мне нужно заменить все элементы <h2 class="someclass"> в документе HTML с помощью <h1 class="someclass">. Как изменить имя тега, не изменяя ничего в документе? Ответ 1 Я не знаю, как вы обращаетесь к tag, но для меня работает следующее: import BeautifulSoup if __name__ == "__main__": data = """ <html> <h2 class='someclass'>some title</h2> <ul> <li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li> <li>Aliquam tincidunt mauris eu risus.</li> <li>Vestibulum auctor dapibus neque.</li> </ul> </html> """ soup = BeautifulSoup.BeautifulSoup(data) h2 = soup.find('h2') h2.name = 'h1' print soup Вывод команды print soup: <html> <h1 class='someclass'>some title</h1> <ul> <li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li> <li>Aliquam tincidunt mauris eu risus.</li> <li>Vestibulum auctor dapibus neque.</li> </ul> </html> Как вы можете видеть, h2 стал h1. И ничего больше в документе не изменилось. Я использую Python 2.6 и BeautifulSoup 3.2.0. Если у вас более одного h2, и вы хотите изменить их все, вы можете просто сделать: soup = BeautifulSoup.BeautifulSoup(your_data) while True: h2 = soup.find('h2') if not h2: break h2.name = 'h1' Ответ 2 Это просто: tag.name = 'new_name' Ответ 3 От Документы BeautifulSoup from BeautifulSoup import BeautifulSoup, Tag soup = BeautifulSoup("<h2 class="someclass">TEXTHERE</h2>") tag = Tag(soup, "h1", [("class", "someclass")]) tag.insert(0, "TEXTHERE") soup.h2.replaceWith(tag) print soup # <h1 class="someclass">TEXTHERE</h1>
Ответ 1 Я не знаю, как вы обращаетесь к tag, но для меня работает следующее: import BeautifulSoup if __name__ == "__main__": data = """ <html> <h2 class='someclass'>some title</h2> <ul> <li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li> <li>Aliquam tincidunt mauris eu risus.</li> <li>Vestibulum auctor dapibus neque.</li> </ul> </html> """ soup = BeautifulSoup.BeautifulSoup(data) h2 = soup.find('h2') h2.name = 'h1' print soup Вывод команды print soup: <html> <h1 class='someclass'>some title</h1> <ul> <li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li> <li>Aliquam tincidunt mauris eu risus.</li> <li>Vestibulum auctor dapibus neque.</li> </ul> </html> Как вы можете видеть, h2 стал h1. И ничего больше в документе не изменилось. Я использую Python 2.6 и BeautifulSoup 3.2.0. Если у вас более одного h2, и вы хотите изменить их все, вы можете просто сделать: soup = BeautifulSoup.BeautifulSoup(your_data) while True: h2 = soup.find('h2') if not h2: break h2.name = 'h1'
Ответ 3 От Документы BeautifulSoup from BeautifulSoup import BeautifulSoup, Tag soup = BeautifulSoup("<h2 class="someclass">TEXTHERE</h2>") tag = Tag(soup, "h1", [("class", "someclass")]) tag.insert(0, "TEXTHERE") soup.h2.replaceWith(tag) print soup # <h1 class="someclass">TEXTHERE</h1>