本文介绍了美丽的汤:“结果”对象有没有属性'find_all“?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图用美丽的汤凑一个简单的表。这里是我的code:
I am trying to scrape a simple table using Beautiful Soup. Here is my code:
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')
first_name = []
last_name = []
age = []
preTestScore = []
postTestScore = []
for row in table.find_all('tr'):
col = table.find_all('td')
column_1 = col[0].string.strip()
first_name.append(column_1)
column_2 = col[1].string.strip()
last_name.append(column_2)
column_3 = col[2].string.strip()
age.append(column_3)
column_4 = col[3].string.strip()
preTestScore.append(column_4)
column_5 = col[4].string.strip()
postTestScore.append(column_5)
columns = {'first_name': first_name, 'last_name': last_name, 'age': age, 'preTestScore': preTestScore, 'postTestScore': postTestScore}
df = pd.DataFrame(columns)
df
然而,每当我运行它,我得到这个错误:
However, whenever I run it, I get this error:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-116-a900c2872793> in <module>()
14 postTestScore = []
15
---> 16 for row in table.find_all('tr'):
17 col = table.find_all('td')
18
AttributeError: 'ResultSet' object has no attribute 'find_all'
我看了周边有十几计算器有关此错误的问题,我想不出什么我做错了。
I have read around a dozen StackOverflow questions about this error, and I cannot figure out what I am doing wrong.
推荐答案
的表
变量包含一个数组。您需要调用 find_all
其成员(即使你知道这是只有一个成员的数组),而不是整个事情。
The table
variable contains an array. You would need to call find_all
on its members (even though you know it's an array with only one member), not on the entire thing.
>>> type(table)
<class 'bs4.element.ResultSet'>
>>> type(table[0])
<class 'bs4.element.Tag'>
>>> len(table[0].find_all('tr'))
6
>>>
这篇关于美丽的汤:“结果”对象有没有属性'find_all“?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!