Python BeautifulSoup不必要地慢

时间:2011-12-17 10:49:54

标签: python beautifulsoup

虽然这段代码运行得非常快:

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 :(得分:0)

如果您只想打印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,并提及您尝试从中提取的位。