BeautifulSoup查找和替换文本会导致HTML问题

时间:2012-05-19 12:46:46

标签: python beautifulsoup

for finding in soup.findAll(text=reg_compiled_keyword):
   if finding.parent.name == "img":
      continue

   new_text = re.sub(reg_compiled_keyword,cls.keyword_replace_tmpl.format(escaped_kw,id,escaped_kw),finding)

   finding.replaceWith(new_text)

For循环返回NavigableString对象,如果我使用replace函数,它还会替换导致无效HTML的属性中的文本。

如何检查当前NavigableString是否在属性中,以便我可以跳过它?

1 个答案:

答案 0 :(得分:0)

我的理解是find_all()不会为您提供属性值的NavigableStrings。您确定要获取属性值范围内的NavigableStrings吗?

假设你以某种方式可以或我错了,试试这个以查看你拥有的是属性值。

finding.string in finding.parent.attrs.values()

(当然,在此之前检查.parent和.parent.attrs()是有效的对象))

如果NavigableString True是属性值,则会返回finding

如果您想查看finding是否属性(不是属性值),那么您可以将values()替换为keys()