BeautifulSoup清除h2标签首尾空格后原soup修改未生效问题
问题原因
- 你在循环中对局部变量
heading做了字符串赋值操作,该操作仅修改了当前循环的临时变量,完全没有改动BeautifulSoup内存中存储的DOM树节点,因此打印原soup对象时不会体现你的修改。 - 代码中的
soup.prettify()调用没有接收返回值,该方法不会修改原soup对象,仅会返回格式化后的HTML字符串,该行属于无效调用。
解决方法
要修改DOM树中的节点内容,直接更新h2节点的文本属性即可,修改后的完整代码如下:
from bs4 import BeautifulSoup import lxml html_code = ''' <html> <body> <h2 class="myclass"> This is a Headline </h2> <h2 class="myclass"> Another H2 element </h2> </body> </html> ''' soup = BeautifulSoup(html_code,'lxml') headings = soup.find_all('h2', {'class':'myclass'}) for heading in headings: # 若需要保留原class属性,删除下一行即可 del heading['class'] # 直接修改节点文本为去除首尾空格后的内容 heading.string = heading.text.strip() print(soup)
运行上述代码后打印的soup对象,h2标签内的多余空格已经被清除,同时保留原标签结构。
内容的提问来源于stack exchange,提问作者Catalin
相关产品推荐
相关产品推荐

