BeautifulSoupの.textとget_text()の違い、.textと.stringの違い

.text と get_text() の違い

結論は:

1. パラメーターなしで get_text() を呼び出すことは .text と同等であり、違いはありません。

2. ただし、get_text は動作を変更するためのさまざまなキーワード パラメータ (セパレータ、ストリップ、タイプ) もサポートしているため、結果をより柔軟に制御したい場合は、get_text を使用できます。

3. 視覚的に読むには、.text の方が洗練されているようです。

公式ソースコードの実装:

    @property
    def stripped_strings(self):
        for string in self._all_strings(True):
            yield string
 
    def get_text(self, separator=u"", strip=False,
                 types=(NavigableString, CData)):
        """
        Get all child strings, concatenated using the given separator.
        """
        return separator.join([s for s in self._all_strings(
                    strip, types=types)])
    getText = get_text
    text = property(get_text)

参考:https://blog.csdn.net/f156207495/article/details/78074240

.text と .string の違いについては、例を参照してください。

1、<td>some text</td> 
2、<td></td>
3、<td><p>more text</p></td>
4、<td>even <p>more text</p></td>

.string の結果は次のようになります。

1、some text
2、None
3、more text
4、None

.text の結果は次のようになります。

1、some text
2、
3、more text
4、even more text

結論は:

1. 1行目でタグtdが指定されている場合、サブタグはなくテキストがあり、両方の戻り結果は同じで、どちらもテキストです

2. 2 行目で、指定されたタグ td にサブタグもテキストもない場合、.string は None を返し、.text は空を返します。

3. 3 行目では、指定されたタグ td にサブタグが 1 つだけあり、テキストがサブタグの間にのみ表示される場合、どちらも同じ結果を返し、どちらもサブタグ内のテキストを返します。

4. 4 行目は、最も重要な違いです。指定されたタグ td にサブタグがあり、親タグ td とサブタグ p にそれぞれテキストが含まれている場合、この 2 つの戻り結果には大きな違いがあります。

.string は空を返します。テキストの数 >= 2 であるため、string はどれを取得するかわかりません。

.text は 2 つのテキストを連結したものを返します。

転載元: https://zhuanlan.zhihu.com/p/30911642

おすすめ

転載: blog.csdn.net/bigcarp/article/details/128580324