2017-12-30 42 views
1

BS4을 사용하여 다음 HTML을 캡처했지만 아티스트 태그를 검색 할 수 없습니다. 내가 용기라는 변수에 코드 블록을 할당 한 다음 행운없이Beautiful Soup Parse Python

print container.tr.td["artist"] 

을 시도했습니다. 조언을 주시면 감사하겠습니다.

<tr class="item"> 
    <!-- <td class="image"><a href="https://www.stargreen.com/kool-as-the-gang-44415.html" title="KOOL AS THE GANG " class="product-image"><img src="https://www.stargreen.com/media/catalog/product/cache/1/small_image/135x/9df78eab33525d08d6e5fb8d27136e95/K/o/KoolAsTheGang.jpg" width="135" height="135" alt="KOOL AS THE GANG " /></a></td> --> 
    <td class="date">Sat, 30 Dec 2017</td> 
    <td class="artist">kool as the gang</td> 
    <td class="venue">100 club</td> 
    <td class="link"> 
    <p class="availability out-of-stock"> 
    <span>Off Sale</span></p> 
    </td> 
</tr> 

답변

5

귀하의 구문이 잘못 "아티스트"가 "클래스"의 값이 시도 속성 :

from bs4 import BeautifulSoup 

html = """ 
<tr class="item"> 
<!-- <td class="image"><a href="https://www.stargreen.com/kool-as-the-gang-44415.html" title="KOOL AS THE GANG " class="product-image"><img src="https://www.stargreen.com/media/catalog/product/cache/1/small_image/135x/9df78eab33525d08d6e5fb8d27136e95/K/o/KoolAsTheGang.jpg" width="135" height="135" alt="KOOL AS THE GANG " /></a></td> --> 
<td class="date">Sat, 30 Dec 2017</td> 
<td class="artist"> 
         kool as the gang      </td> 
<td class="venue">100 club</td> 
<td class="link"> 
<p class="availability out-of-stock"> 
<span>Off Sale</span></p> 
</td> 
</tr> 
""" 

soup = BeautifulSoup(html, 'html.parser') 
td = soup.find('td',{'class': 'artist'}) 
print (td.text.strip()) 

출력을 :

kool as the gang 
2

또 다른 방법.

container에서 class이 '예술가'인 요소를 select 방법으로 찾으십시오. 하나 이상의 요소가있을 수 있기 때문에 목록에있는 요소를 하나만 선택하고 text 특성을 요청하십시오.

>>> HTML = open('sven.htm').read() 
>>> import bs4 
>>> container = bs4.BeautifulSoup(HTML, 'lxml') 
>>> container.select('.artist')[0].text 
'\n      kool as the gang      '