2017-05-03 59 views
1

通过的同一品种大约有十几个问题,巡航,并咨询了同事后,我决定,我需要一些专家的见解AttributeError的:“功能”对象有没有属性“find_all”美丽的汤

with open("c:\source\list.csv") as f: 
    for row in csv.reader(f): 
    for url in row: 
     r = requests.get(url) 
     soup = BeautifulSoup(r.content, 'lxml') 
     tables = soup.find('table', attrs={"class": "hpui-standardHrGrid-table"}).append 
     for rows in table.find_all('tr', {'releasetype': 'Current_Releases'}): 
      item = [].append 
      for val in row.find_all('td'): 
      item.append(val.text.encode('utf8').strip()) 
      rows.append(item) 
     headers = [header.text for header in tables.find_all('th')].append 
     rows = [].append 
     print (headers) 

所以我在这里是:一个csv文件,其中有30个URL。我首先将它们转储到Soup中以获取它的所有内容,然后将特定的HTML元素(表)绑定到tables变量。在此之后,我试图从这些表中拉出特定的行和标题。

根据我的大脑的逻辑思维,它应该工作,而是我得到这个:

Traceback (most recent call last): 
    File "<stdin>", line 7, in <module> 
AttributeError: 'function' object has no attribute 'find_all' 

7号线是

for rows in table.find_all('tr', {'releasetype': 'Current_Releases'}): 

什么是我们在这里失踪?

+1

为什么你在'tables = soup.find('table',attrs = {“class”:“hpui-standardHrGrid-table”})末尾加上'.append'? – roganjosh

+1

什么是“表”?我猜错了吗?另外,'[] .append'应该是什么意思?在尝试编写任何代码之前,请学习一些Python。 – ForceBru

+0

你不可能是一个***洞吗?我正在学习。无可否认,我是一个绝对的新手,他的任务是创建这个程序。我使用append将30个表追加到一个变量中。 –

回答

2

你对Python语法有一些奇怪的误解。您的代码中有四次提到<something>.append;我不确定你的想法是什么,但append是一种方法,它不仅必须被调用,与(),但它需要一个参数:你正在追加的东西。

因此,例如,该行:

item = [].append 

毫无意义可言;你期待item是什么?你希望追加什么?当然你的意思是item = []

在具体情况下,误差是由于上一行的末尾多余append的:

tables = soup.find('table', attrs={"class": "hpui-standardHrGrid-table"}).append 

同样,只是删除append

+0

噢,谢谢你对追加的了解。我被告知使用我的同事追加将多个表结果(从30个URL)附加到单个变量。当我运行的代码没有附加在表变量的末尾,它的工作原理,但只从一个表中拉取数据(列表中的最后一个) 我很难相信这是不可能完成的python –

+1

当然这不是不可能实现的;你的问题与Python无关,只是一般的编程逻辑。如果要循环访问列表中的一堆项目,则需要在循环外部定义该列表,然后将内容附加到循环内的列表中。 –

+0

我希望我对普通Python有更多的了解,我被随意抛弃了,所以即时通讯不得不随时学习。我对父邮件进行了更新。我删除了代码中的附件,现在即时通讯在另一条线上出现全新的错误。 –

相关问题