2017-03-20 30 views
0

我有一個div類稱爲 - 'class =「table-wrap MEDdata」',其中還有另一個div類 - 'table-container small-screen-全角「,在這個我有一個表 - 'course_catalog_table',我想訪問。這裏是鏈接到我試圖颳去的頁面 - http://www.nyit.edu/academics/courses/ 這是如何實現的?請幫助我們如何才能獲得一個嵌套的div內使用soup.find

Output: table = div.find('table', {'id':'course_catalog_table'}) AttributeError: 'ResultSet' object has no attribute 'find'

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

有你的代碼的兩個問題。 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', 
# ... 
+0

如果你可以看看這個鏈接 - > http://www.nyit.edu/academics/courses/,沒有div id ...和每個課程數據的表id是相同的 –

+0

這就是爲什麼我將div的id改爲class。而三門課的課程是不同的,你可以用它來識別表格。 – Psidom

+1

非常感謝!這有助於...... div = soup.find('div',{'class':'table-wrap MEDdata'}) table = div.find('table',{'id':'course_catalog_table'}) –

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'} 

這是一個列表,所以你不能在所有的元素中使用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](取決於元素的數量),如果你使用這個代碼,你的代碼可以工作。

相關問題