在 Beautifulsoup 中提取价值
Posted
技术标签:
【中文标题】在 Beautifulsoup 中提取价值【英文标题】:Extracting value in 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
我做错了什么来获得这个价值?
【问题讨论】:
【参考方案1】:您可以使用contents
向下移动树:
>>> for x in schoolname:
>>> print x.contents
[u'A B Paterson College, Arundel, QLD']
请注意,内容不一定必须是字符串 - 通常也可以是更多标签或字符串和标签的混合。
【讨论】:
【参考方案2】:findAll 返回一个字符串列表,这就是您得到异常的原因。我很确定您的问题只需使用 find 而不是 findAll 即可解决。然后你应该能够访问你想要的值:
schoolname['value']
显然,这只有在您只需要一个特定值时才“有效”。
【讨论】:
以上是关于在 Beautifulsoup 中提取价值的主要内容,如果未能解决你的问题,请参考以下文章