Пока этот код работает довольно быстро:
for olay in soup("li", {"class":"textb"}):
tanim = olay("strong")
try:
print tanim[0]
except IndexError:
pass
Получение строкового свойства делает этот код значительно медленнее:
for olay in soup("li", {"class":"textb"}):
tanim = olay("strong")
try:
print tanim[0].string
except IndexError:
pass
Мой вопрос в том, делаю ли я что-то, чего не должен получать строковое свойство? Должен ли я использовать что-то еще, чтобы получить текстовую версию объекта?
Обновление: это также работает довольно быстро, так что медлительность уникальна для строкового свойства, я думаю?
for olay in soup("li", {"class":"textb"}):
tanim = olay("strong")
try:
print tanim[0].text
except IndexError:
pass
1 ответ
Если вы просто хотите напечатать строковое представление tanim[0]
. Вы должны просто сделать: print str(tanim[0])
. Кроме того, выполните dir(tanim[0])
, чтобы увидеть, есть ли у него свойство с именем string
вообще.
for olay in soup("li", {"class":"textb"}):
tanim = olay("strong")
try:
print str(tanim[0])
except IndexError:
pass
Чтобы каждый мог дать лучший ответ, вы также можете опубликовать целевой HTML или URI и указать, какой бит вы пытаетесь извлечь из него.
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.
.text
самый медленный, а два других примерно одинаковы. Хотя в целом разница не большая. Итак, вопрос: что вы тестируете и как?