首页 >后端开发 >Python教程 >为什么我的 Beautiful Soup 代码会抛出 AttributeError: \'ResultSet\' 对象没有属性 \'find_all\'?

为什么我的 Beautiful Soup 代码会抛出 AttributeError: \'ResultSet\' 对象没有属性 \'find_all\'?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-26 14:01:13663浏览

Why Does My Beautiful Soup Code Throw an AttributeError: 'ResultSet' object has no attribute 'find_all'?

Beautiful Soup:访问“ResultSet”对象上的“find_all”属性时出现 AttributeError

在使用 Beautiful Soup 进行网页抓取时,必须了解您正在使用的对象类型。使用 BeautifulSoup.find_all() 时,请确保将其应用到正确的对象。

考虑下面的代码片段:

import requests
from bs4 import BeautifulSoup

url = 'https://gist.githubusercontent.com/anonymous/c8eedd8bf41098a8940b/raw/c7e01a76d753f6e8700b54821e26ee5dde3199ab/gistfile1.txt'
r = requests.get(url)

soup = BeautifulSoup(r.text)
table = soup.find_all(class_='dataframe')

在此代码中,table 是一个 ResultSet 对象。 ResultSet 是一个类似列表的对象,包含多个 Tag 对象。要查找每个 Tag 对象中的元素,您需要迭代 ResultSet 中的元素并对每个 Tag 对象调用 find_all()。

下面更正的代码演示了这一点:

...
for row in table[0].find_all('tr'):
    col = row.find_all('td')
...

总之,当您遇到 AttributeError: 'ResultSet' object has no attribute 'find_all' 时,请验证您是否在适当的对象类型上调用 find_all()。在这种情况下,请记住迭代 ResultSet 并对每个 Tag 对象执行 find_all()。

以上是为什么我的 Beautiful Soup 代码会抛出 AttributeError: \'ResultSet\' 对象没有属性 \'find_all\'?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn