【问题标题】:Extracting value in Beautifulsoup在 Beautifulsoup 中提取价值
【发布时间】:2011-02-06 16:22:49
【问题描述】:

我有以下代码:

f = open(path, 'r')
html = f.read() # no parameters => reads to eof and returns string

soup = BeautifulSoup(html)
schoolname = soup.findAll(attrs={'id':'ctl00_ContentPlaceHolder1_SchoolProfileUserControl_SchoolHeaderLabel'})
print schoolname

给出:

[<span id="ctl00_ContentPlaceHolder1_SchoolProfileUserControl_SchoolHeaderLabel">A B Paterson College, Arundel, QLD</span>]

当我尝试使用 schoolname['value'] 访问该值(即 'A B Paterson College, Arundel, QLD)时,我收到以下错误:

print schoolname['value'] TypeError: list indices must be integers, not str

我做错了什么来获得这个价值?

【问题讨论】:

    标签: python beautifulsoup


    【解决方案1】:

    您可以使用contents 向下移动树:

    >>> for x in schoolname:
    >>>    print x.contents
    [u'A B Paterson College, Arundel, QLD']    
    

    请注意,内容不一定必须是字符串 - 通常也可以是更多标签或字符串和标签的混合。

    【讨论】:

      【解决方案2】:

      findAll 返回一个字符串列表,这就是您得到异常的原因。我很确定您的问题只需使用 find 而不是 findAll 即可解决。然后你应该能够访问你想要的值:

      schoolname['value']
      

      显然,这只有在您只需要一个特定值时才“有效”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-10-24
        • 1970-01-01
        • 2010-12-21
        • 1970-01-01
        • 2010-12-13
        • 2020-06-03
        相关资源
        最近更新 更多