0

美しいスープを使用して div からテキストを表示するための非常に簡潔なソリューションがあり、findここでは https://stackoverflow.com/a/8994150/1063287 :

result = soup.find('div', {'class' :'flagPageTitle'}).text

次のシナリオで同じロジックを適用したいと考えています。

content = original_content("div","class1 class2")

これを次のように変更すると:

content = original_content("div","class1 class2").text

エラーが発生しています:

AttributeError: 'ResultSet' object has no attribute 'text'

上記のように find_all を使用しているシナリオで、最初に示したのと同じロジックを使用する方法を教えてください。(入力しないショートカットを使用していることに注意してください。こちらfind_allを参照してください)

ありがとうございました。

4

1 に答える 1

2

要素を直接呼び出す場合は、暗黙の.find_all()メソッドを使用しています。これにより、結果セット (リストのようなオブジェクト) が返されます。を使用limitしても返される内容は変わりません。返される数だけが変わります。

そのセットの最初の要素を取得したい場合は、スライスを使用します。

original_content("div","class1 class2", limit=1)[0].text

またはそれについて明示して、.find()代わりに使用します:

original_content.find("div","class1 class2").text

すべての一致のテキストを取得するには、結果セットをループする必要があります。リスト内包表記が最も簡単です。

[el.text for el in original_content("div","class1 class2")]
于 2013-04-20T10:36:47.090 に答える