BeautifulSoup 中“findAll”和“find_all”的区别
- 2025-03-21 09:05:00
- admin 原创
- 46
问题描述:
我想用 Python 解析 HTML 文件,我使用的模块是 BeautifulSoup。
据说功能find_all
与 相同findAll
。我都试过了,但我认为它们是不同的:
import urllib, urllib2, cookielib
from BeautifulSoup import *
site = "http://share.dmhy.org/topics/list?keyword=TARI+TARI+team_id%3A407"
rqstr = urllib2.Request(site)
rq = urllib2.urlopen(rqstr)
fchData = rq.read()
soup = BeautifulSoup(fchData)
t = soup.findAll('tr')
谁能告诉我其中的区别?
解决方案 1:
在 BeautifulSoup 版本 4 中,方法完全相同;大小写混合版本(findAll
、findAllNext
、nextSibling
等)都已重命名以符合Python 样式指南,但旧名称仍可用,以便于移植。请参阅方法名称以获取完整列表。
在新代码中,您应该使用小写版本,所以find_all
,等等。
但是,在您的示例中,您使用的是 BeautifulSoup版本 3(自 2012 年 3 月起停产,如果可以的话请不要使用它),其中只有findAll()
可用。未知属性名称(例如,仅在 BeautifulSoup 4 中可用)将被视为您正在搜索该名称的标签。您的文档中.find_all
没有标签,因此返回 。<find_all>
`None`
解决方案 2:
从BeautifulSoup的源代码中:
http://bazaar.launchpad.net/~leonardr/beautifulsoup/bs4/view/head:/bs4/element.py#L1260
def find_all(self, name=None, attrs={}, recursive=True, text=None,
limit=None, **kwargs):
# ...
# ...
findAll = find_all # BS3
findChildren = find_all # BS2
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD