1

有人可以解释一下findAllBeautifulSoup 的工作原理吗?

我的疑问是这一行: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()
4

1 回答 1

2

来自文档:Beautifulsoup 文档

Beautiful Soup 提供了许多方法来遍历(通过)解析树,收集TagsNavigableStrings匹配您指定的标准。

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

findAll方法从给定点开始遍历树,并找到与您给出的标准匹配的所有Tag对象NavigableString。该findall方法的签名是这样的:

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

name参数可用于传入:

  • 标签名称(例如<B>)
  • 正则表达式
  • 列表或字典
  • 值真
  • 可调用对象

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

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

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

该文档有更多示例可以帮助您理解。

于 2013-11-08T08:07:56.360 回答