2014-10-19 3 views
-1

HTML 문서를 구문 분석하려고하는데, 여러분이 저를 도울 수 있는지 궁금합니다.클래스 이름 대체 BeautifulSoup

<tr height="21" style="height:15.75pt"> 
     <td class="style14" height="21" style="height: 15.75pt"> 
     71 
     </td> 
     <td class="style14"> 
     Breakeven 
     </td> 
     <td class="style10"> 
     The Script 
     <span style="mso-spacerun:yes"> 
     </span> 
     </td> 
     </tr> 

td class = 'style10'을 class = 'style14'로 변경하고 싶습니다. 그러나 스타일 14로 변경하면 가져 오지 않습니다. 따라서 "The Script"는 인쇄되지 않습니다.

search =soup.find('td', class_='style10') 
search['class'] = 'style14' 

for each in search: 
    print each.text 

이 할 수있는 방법이 있나요 :

여기 내 코드입니까?

+0

는 당신이'search'를 통해 클래스 * 후 * 반복하는 수정할 수 없습니다? – Bakuriu

+0

루프에서 각각을 인쇄하는 경우 어떻게됩니까? –

답변

1

하나의 요소을 반복하고 있으며 하위 요소 만 나열합니다. 선택한 태그에 추가 텍스트가있는 하위 요소가 없으므로 (<span style="mso-spacerun:yes"> 요소가 비어 있음) 아무 것도 표시되지 않습니다.

그냥 루프, 직접 텍스트에 도착하지 않습니다

print search.text 

클래스 변화는 여기에 다 치신하지 않았다.

데모 :

>>> from bs4 import BeautifulSoup 
>>> soup = BeautifulSoup('''\ 
... <tr height="21" style="height:15.75pt"> 
...  <td class="style14" height="21" style="height: 15.75pt"> 
...   71 
...  </td> 
...  <td class="style14"> 
...   Breakeven 
...  </td> 
...  <td class="style10"> 
...   The Script 
...   <span style="mso-spacerun:yes"> 
...   </span> 
...  </td> 
...  </tr> 
... ''') 
>>> search =soup.find('td', class_='style10') 
>>> search['class'] 
['style10'] 
>>> search['class'] = 'style14' 
>>> search['class'] 
'style14' 
>>> list(search) 
[u'\n  The Script\n  ', <span style="mso-spacerun:yes"> 
</span>, u'\n'] 
>>> search.text 
u'\n  The Script\n  \n\n' 
+0

정말 고마워! 나는 비어있는 것을 반복하고 있다는 것을 몰랐다. 이제 해결되었습니다. –