1

老实说,我觉得BeautifulSoup太难了,文档没有解释我正在寻找的基础知识。

我正在尝试在具有属性的标签内返回字符串:

<span class="on">6220</span>

但是运行这个:

def fetch_online():
    users = page('span', {'class' : 'on'})
    return str(users)

给我[<span class="on">6220</span>]。所以我认为我做错了,从标签中获取简单字符串的方法是什么?

4

3 回答 3

1

确实,BeautifulSoup 并不那么容易理解,但它有时会非常有用;)

因此,重新以 FlopCoder 为例并对其进行更多解释:

html = # HTML Code #maybe parsed from a website
soup = BeautifulSoup(html) #you create a soup object with your html code
x = soup.find('span', {'class' : 'on'}) #Search for the first span balise in the code, whith class : on
print x.text #Find the found balise, .text mean only the text inside the <>text</>

如果您有不止一个需要找到您需要做的事情:

x = soup.findAll('span', {'class' : 'on'})
for span in x:
    print span.text

最后一个示例使用 findAll。它使用代码中的 Class:On 创建一个包含所有跨度应答器的列表。那么你可以运行一个for。

your_object.text --> 返回文本

your_object.a --> 返回链接(等等...)

希望它可以帮助一点点!

于 2012-05-29T02:34:16.717 回答
1

你可以这样做:

html = # your HTML source goes here
soup = BeautifulSoup(html)
x = soup.find('span', {'class' : 'on'})
print x.text
print x.string
print x.contents[0]
于 2012-05-26T14:59:04.060 回答
0

代替

return str(users)

return users[0].string

或者

return users[0].contents

page('span ...call 实际上是调用函数的简写符号,find_all()它返回一个列表。所以你首先索引到那个列表,获取标签,然后获取它的contents. 在其上运行 Pythonstr()函数将为您提供全部内容 - 您需要 BeautifulSoup 函数来获取标签的字符串。

于 2012-05-26T14:59:20.310 回答