2
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 是否在属性内以便我可以跳过它?

4

1 回答 1

0

我的理解是 find_all() 不会给你 NavigableStrings 是属性值。你确定你得到的是属性值内的 NavigableStrings 吗?

假设你能以某种方式或者我错了,试试这个看看你所拥有的是否是一个属性值。

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

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

True如果 NavigableStringfinding是一个属性值,这将返回。

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

于 2012-05-23T22:38:50.523 回答