`findAll`如何在BeautifulSoup中工作?

时间:2013-11-08 07:55:20

标签: python

有人可以解释一下findAll在BeautifulSoup中的作用吗?

我怀疑是这一行:A = soup.findAll('strong',{'class':'name fn'})。它看起来像找到一些符合某些标准的字符。

但网页的原始代码就像...... <STRONG class="name fn">iPod nano 16GB</STRONG> ......

('strong',{'class':'name fn'})如何选择它?感谢。

原始Python代码

from bs4 import BeautifulSoup
import urllib2
import re

url="http://m.harveynorman.com.au/ipods-audio-music/ipods/ipods"
page=urllib2.urlopen(url)
soup = BeautifulSoup(page.read())
A = soup.findAll('strong',{'class':'name fn'})
for B in A:
    print B.renderContents()

1 个答案:

答案 0 :(得分:2)

来自文档:Beautifulsoup Docs

Beautiful Soup提供了许多遍历(遍历)解析树的方法,收集了与您指定的条件匹配的TagsNavigableStrings

来自基本查找方法:findAll(name, attrs, recursive, text, limit, **kwargs)

findAll方法从给定点开始遍历树,并查找与您给出的条件匹配的所有TagNavigableString对象。 findall方法的签名是:

findAll(name=None, attrs={}, recursive=True, text=None, limit=None, **kwargs)

name参数可用于传递:

  • 标记名称(例如&lt; B&gt;)
  • 正则表达式
  • 列表或词典
  • 值True
  • 可调用对象

关键字参数对标记的属性施加限制。

搜索具有特定CSS类的标记非常有用,但CSS属性的名称class也是Python保留字。

您可以使用soup.find("tagName", { "class" : "cssClass" })搜索CSS类,就像您提供的代码一样),但这是一个常见操作的代码。相反,您可以传递attrs的字符串而不是字典。

该文档还有其他示例可以帮助您理解。