Python BeautifulSoup излишне медленный - PullRequest
1 голос
/ 17 декабря 2011

Пока этот код работает довольно быстро:

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 Ответ

0 голосов
/ 17 декабря 2011

Если вы просто хотите напечатать строковое представление 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 и указатькакой бит вы пытаетесь извлечь из него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...