2014-09-24 42 views
-1
<hknbody> 
     <tr> 
      <td class="padding_25 font_7 bold xicolor_07" style="width:30%"> 

       date 

      </td> 
      <td class="font_34 xicolor_42"> 

       19 Eylül 2013 

      </td> 
     </tr> 
     <tr> 
      <td style="height:10px" colspan="3"></td> 
     </tr> 
     <tr> 
      <td class="bgcolor_09" style="height:5px" colspan="3"></td> 
     </tr> 
     <tr> 
      <td style="height:10px" colspan="3"></td> 
     </tr> 
     <tr> 
      <td class="padding_25 font_7 bold xicolor_07" style="width:30%"> 

       Size 

      </td> 
      <td class="font_34 xicolor_42"> 
       650 cm 

類名相同,類在同一個表中。 如何找到正確的數據?例;如果<td class="padding_25 font_7 bold xicolor_07>中不存在「日期」,則不會提取日期並查找下一個數據。如何在beautifulsoup中找到類

+0

'BeautifulSoup(html_code).findAll( 「TD」,{ 「級」: 「font_34」})' – PascalVKooten 2014-09-24 08:18:43

+0

「BeautifulSoup(html_code ).findAll(「td」,{「class」:「font_34」})「我知道。這是個問題。例;如果日期不存在,我將其他數據放在錯誤的地方。 – 2014-09-24 08:31:38

+0

你的問題對我來說還不夠清楚。什麼是''標籤? – 2014-09-24 09:13:47

回答

0

如果這是你的HTML並且你可以改變它,你應該使用semantic HTML來標記你的元素,用class,id或name屬性來描述數據的含義,而不是它的外觀。然後你將有一個明確的方式選擇所需的標籤。

因爲它是所有你需要做的是這樣的:

import re 
from bs4 import BeautifulSoup 

soup = BeautifulSoup(html) 

date_tag = soup.find('td', text=re.compile('^\s*date\s*$')) # find first <td> containing text "date" 
if date_tag: 
    date_value = date_tag.find_next_sibling('td').text.strip() 

>>> print date_value 
19 Eylül 2013