在Beautifulsoup中提取价值

时间:2010-04-11 10:05:07

标签: python beautifulsoup

我有以下代码:

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

findAll返回一个字符串列表,这就是你得到一个例外的原因。我很确定你的问题只是通过使用find而不是findAll来解决。然后,您应该能够访问所需的值:

schoolname['value']

显然,如果您只需要一个特定值,这只会“有效”。