我正在尝试编写一些代码,这些代码将从互联网上抓取财务数据,然后将其作为表格中的表格呈现。我遇到的问题是我一直返回一个错误,上面写着:AttributeError:'ResultSet'对象没有属性'findAll' 我不知道为什么它会一直这样,我已经尝试了很多东西来摆脱错误,但它只是不断回来。我希望这里的一些人能够对这种情况有所了解。我的代码如下:
import urllib2
from bs4 import BeautifulSoup
Goog_page = 'https://uk.finance.yahoo.com/q/hp?s=GOOG'
page = urllib2.urlopen(Goog_page)
html = page.read()
soup = BeautifulSoup(html, "lxml")
soup.prettify().encode('UTF-8')
#print soup.findAll('table')
right_table = soup.find_all('table', {'class':'yfnc_datamodoutline1'})
A=[]
B=[]
C=[]
D=[]
E=[]
F=[]
G=[]
H=[]
I=[]
J=[]
def parse_string(el):
text = ''.join(el.findAll(text=True))
return text.strip()
for rows in right_table:
rows = map(parse_string, right_table.findAll('tr'))
for cell in rows:
data = map(parse_string, rows.findAll('td'))
if len(data)>1:
A.append(data[0].find(text=True))
B.append(data[1].find(text=True))
C.append(data[2].find(text=True))
D.append(data[3].find(text=True))
E.append(data[4].find(text=True))
F.append(data[5].find(text=True))
G.append(data[6].find(text=True))
H.append(data[7].find(text=True))
I.append(data[8].find(text=True))
J.append(data[9].find(text=True))
我得到的错误是:文件“...”,第37行,在rows = right_table.findAll('tr')中然后打印出错误信息。
我正在使用python 2.7和Windows 8.1
提前感谢您的帮助!
答案 0 :(得分:0)
在代码的这一部分:
data = map(parse_string, rows.findAll('td'))
if len(data)>1:
如果您只有一个for
元素,则需要使用data
循环来遍历您的rows.find('td')
对象,或使用findAll
代替td
例如,如果您想获取每个<td>
的文本并将其添加到列表中,您可以:
data = []
for row in right_table:
tablecells = row.findAll('td')
for cell in tablecells:
data.append(row.get_text().strip())