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 に答える