首页 > 代码库 > python 学习之FAQ:find 与 find_all 使用
python 学习之FAQ:find 与 find_all 使用
FAQ记录
1. 错误源码
错误源码如下
def fillUnivList(_html,_ulist): soup =BeautifulSoup(_html,‘html.parser‘) for tr in soup.find_all(‘tbody‘).children: if isinstance(tr,bs4.element.Tag): tds = tr.find_all(‘td‘) _ulist.append((tds[0].string,tds[1].string,tds[3].string))
2. 报错显示
运行报错显示
1 File"printUnivLst.py", line 26,in getUnivList 2 for tr in soup.find_all(‘tbody‘).children:#注意find与find_all不同使用场景 3 AttributeError:‘ResultSet‘ object has no attribute ‘children‘
3. 报错分析
报错内容AttributeError: ‘ResultSet‘ object has no attribute ‘children‘
意思为属性错误:结果集对象每一属性可以调用。
分析错误源码既可以知道soup对象的方法find_all()
返回的是一个结果集列表,而结果集列表是一组数据,其是没有属性的,只有单个数据对象才有属性可言。
故,原错误源码中,对于tbody
标签的子标签内容进行查找时,应该使用find().children
,而soup.find()
返回的结果一个字符串对象,其可以存在属性的调用。
4. 修改的代码
1 # 大学排名数据提取,并存入列表 2 def getUnivList(_html,_Univlst): 3 soup =BeautifulSoup(_html,‘html.parser‘) 4 for tr in soup.find(‘tbody‘).children:#注意find 与find_all不同使用场景 5 if isinstance(tr,bs4.element.Tag): 6 tds = tr.find_all(‘td‘) 7 _Univlst.append((tds[0].string,tds[1].string,tds[3].string))
python 学习之FAQ:find 与 find_all 使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。