2013-11-27 30 views
0
[...] 
    soup = BeautifulSoup(url) 
    for row in soup.find("table", { "class" : "grid-border-args" }).findAll("tr"): 
     if row.find("td", {"class" : "row-label-one"}) != None: 
      uur = row.find("td", {"class" : "row-label-one"}) 
      if row.find("td", {"class" : "object-cell-border"}) != None: 
       vakken = row.findAll("td", {"class" : "object-cell-border"}) 
       for vak in vakken: 
        duur = vak.find("td", {"class" : "object-cell-border"}).attrs["rowspan"] 

此代碼會生成一個錯誤找標籤:「‘NoneType’對象有沒有屬性‘ATTRS’」 這確實是正確的,「沒有」返回,但我不明白爲什麼,因爲每個'vak'都以td類和我正在查找的屬性開頭。例如:BeautifulSoup:不能與特定的屬性

<td class="object-cell-border" colspan="1" rowspan="4" style="border-right:3px solid #000000;"> 
<!-- START OBJECT-CELL --> 
<table border="0" cellspacing="0" class="object-cell-args" width="100%"> 
<col class="object-cell-0-0"></col> 
<tr> 
<td align="left">Lineaire algebra : stelsels, matrices en afbeeldingen</td> 
</tr> 
</table> 
<table border="0" cellspacing="0" class="object-cell-args" width="100%"> 
<col class="object-cell-1-0"></col> 
<col class="object-cell-1-2"></col> 
<tr> 
<td align="left">D.0.02</td> 
<td align="right">3-6, 8, 10-14</td> 
</tr> 
</table> 
<table border="0" cellspacing="0" class="object-cell-args" width="100%"> 
<col class="object-cell-2-0"></col> 
<col class="object-cell-2-2"></col> 
<tr> 
<td align="left">CARA PHILIPPE</td> 
<td align="right"></td> 
</tr> 
</table> 
<!-- END OBJECT-CELL --> 
</td> 

爲什麼它不讓我得到第一個td標籤?

回答

2

這部分將需要嵌套td元素與object-cell-border類:

vakken = row.findAll("td", {"class" : "object-cell-border"}) 
for vak in vakken: 
    duur = vak.find("td", {"class" : "object-cell-border"}).attrs["rowspan"] 

也就是說,首先你會發現所有的td元素與該類並將它們分配給vakken。然後,對於每個這樣的td,您在其中搜索以找到具有相同類別的後代td