findAll在beauthulsoup中是如何工作的?

2024-06-16 17:18:12 发布

您现在位置: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()

Tags: 代码nameimporturlpageurllib2classstrong
1条回答
网友
1楼 · 发布于 2024-06-16 17:18:12

来自文档:Beautifulsoup Docs

BeautifulSoup提供了许多遍历(遍历)解析树的方法,收集与指定条件匹配的Tags和{}。在

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

findAll方法从给定的点开始遍历树,并找到与给定条件匹配的所有Tag和{}对象。findall方法的签名如下:

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

name参数可用于传递:

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

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

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

您可以使用soup.find("tagName", { "class" : "cssClass" })按CSS类进行搜索,就像您给出的代码一样),但是对于这样一个常见的操作,这需要大量的代码。相反,您可以传递attrs的字符串,而不是字典。在

doc还有更多的例子可以帮助您理解。在

相关问题 更多 >