如何用BeautifulSoup将HTML中已有文本包裹进FONT标签?
解决方法:用
wrap()包裹目标文本节点 我来帮你搞定这个问题!你当前用append()方法只是把新创建的FONT标签追加到了目标<td>标签的末尾,所以才会出现日期在标签外面的情况。要实现把文本包裹在标签里的效果,咱们得用BeautifulSoup的wrap()方法,它专门用来把指定标签包裹在目标内容外层。
修改后的代码
import pandas from bs4 import BeautifulSoup a = [['1/2/2014', 'a', '6', 'z1'], ['1/2/2014', 'a', '3', 'z1'], ['1/3/2014', 'c', '1', 'x3'], ] df = pandas.DataFrame.from_records(a[1:], columns=a[0]) soup = BeautifulSoup(df.to_html(header=False), 'lxml') # 定位到包含目标文本的td标签 original_tag = soup.find_all('td')[4] # 创建指定样式的FONT标签 new_tag = soup.new_tag('FONT', COLOR='white') # 把td内部的文本节点用新标签包裹 original_tag.contents[0].wrap(new_tag) print(soup)
关键说明
original_tag.contents[0]:获取到目标<td>里的文本节点(也就是1/3/2014)wrap(new_tag):调用这个方法后,文本节点会被包裹在你创建的FONT标签内部,最终对应的HTML结构会变成:<td><FONT COLOR="white">1/3/2014</FONT></td>
这样运行代码后,你就能看到1/3/2014被FONT标签正确包裹啦。
内容的提问来源于stack exchange,提问作者jason
相关产品推荐
相关产品推荐

