我有一个名为 - ' class =" table-wrap MEDdata"'的div类,其中还有另一个div类 - ' table-container小屏幕-full宽度' ,在这个我有一张桌子 - ' course_catalog_table'我想要访问。这是我试图抓取的页面的链接 - http://www.nyit.edu/academics/courses/ 怎么能实现这一目标?请帮忙
输出:table = div.find(' table',{' id':' course_catalog_table'}) AttributeError:' ResultSet'对象没有属性'找到'
soup = BeautifulSoup(data.content, "lxml")
l =[]
div= soup.find_all('div' , {'id': 'table-wrap MEDdata'})
table = div.find('table', {'id':'course_catalog_table'})
for row in table.findAll("a"):
l.append(row.text)
答案 0 :(得分:0)
您的代码存在两个问题。 1)find_all
返回一个ResultSet或一个无法用另一个find
方法链接的列表,你可以在这里使用find
,因为该元素是唯一的; 2)table-wrap MEDdata
是类属性而不是id
。解决这两个问题后,它应该有效:
l = []
div = soup.find('div' , {'class': 'table-wrap MEDdata'})
table = div.find('table', {'id':'course_catalog_table'})
for row in table.findAll("a"):
l.append(row.text)
l
#['ACLS',
# 'Advanced Cardiac Life Support',
# 'MAOB',
# 'Ob Gyn',
# 'MAAN',
# ...
答案 1 :(得分:0)
Psidom给出了一个很好的答案,但要解释一下。
find_all # Will give you a list of elements that you can access with an index
div= soup.find_all('div' , {'id': 'table-wrap MEDdata'}
这是A LIST所以你不能在所有元素上使用 div.find
,你可以使用循环
for elements in div:
print (div.find('table', {'id':'course_catalog_table'}))
或者你可以做例如div = soup.find('div' , {'class': 'table-wrap MEDdata'})[0]
,其中 [0] 是索引,所以你可以做[0]或[1](取决于元素的数量)和你的如果您使用此代码,代码将起作用。