Ответ 1
.string
для объекта типа Tag
возвращает объект типа NavigableString
. С другой стороны, .text
получает все дочерние строки и возвращает конкатенацию с использованием заданного разделителя. Возвращаемый тип .text - это объект unicode
.
Из документации A NavigableString
похож на строку Python unicode
, за исключением того, что он также поддерживает некоторые функции, описанные в Навигация по дереву и Поиск по дереву.
Из документации в .string
мы можем видеть, что если html похож на это,
<td>Some Table Data</td>
<td></td>
Затем .string
на втором td вернет None
.
Но .text
возвращает и пустую строку, которая является объектом типа unicode
.
Для большего удобства
string
- Свойство удобства
Tag
для получения одной строки внутри этого тега. - Если
Tag
имеет единственный дочерний элемент строки, возвращаемое значение - это строка. - Если у
Tag
нет детей или более одного ребенка, возвращаемое значениеNone
- Если этот
Tag
имеет одно дочернее тег, возвращаемое значение является атрибутом "string" дочернего тега, рекурсивно.
И text
- Получите все дочерние строки и верните конкатенированные с помощью заданного разделителя.
Если html
выглядит следующим образом:
<td>some text</td>
<td></td>
<td><p>more text</p></td>
<td>even <p>more text</p></td>
.string
на четырех td
вернется,
some text
None
more text
None
.text
даст результат, подобный этому,
some text
more text
even more text