BeautifulSoup中“ findAll”和“ find_all”之间的区别


问题内容

我想用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')

谁能告诉我区别?


问题答案:

在BeautifulSoup版本4中,方法完全相同。在混合大小写版本(findAllfindAllNextnextSibling等)已全部更名,以符合Python的风格指南,但

名字仍然可以使移植变得更简单。有关完整列表,请参见方法名称

在新代码中,应使用小写版本,如等等find_all

但是,在您的示例中,您使用的是BeautifulSoup 版本3 (自2012年3月起停产,如果可以帮助 请不要
使用它),该版本仅findAll()可用。未知的属性名称(例如.find_all,仅在BeautifulSoup
4中可用)被视为您正在按该名称搜索标签。<find_all>您的文档中没有标签,因此None将其返回。