2017-11-30 2 views
1

나는이 같은 다른 class 파크 여러 tr 태그가 :BeautifulSoup에서`class = "accordion-toggle main-row"를 가진`tr` 부모 태그의 모든 td를 찾는 방법은?

<tr class="accordion-toggle main-row" data-parent="#OrderPackages" data-target=".packageDetails1" data-toggle="collapse" id="package1"> 
<td><p>01629046</p></td><td><p><a href="https://www.zaubacorp.com/director/SHARMISTHA-HANSRAJ-KAJARIA/01629046"> SHARMISTHA HANSRAJ KAJARIA</a></p> 
</td><td><p>Director</p></td> 
<td><p>01 November 2012</p></td> 
<td><p><a href="javascript:">View other directorships</a></p></td></tr> 

내가 부모 tr 태그 클래스 = "아코디언 토글 메인 행을"이있는 경우 td.p의 모든 텍스트를 추출 할.

<tr class="row text-good" data-parent="#OrderPackages" data- 
target=".packageDetails1" data-toggle="collapse" id="package1"> 
<td><p>01629046</p></td><td><p><a       
href="https://www.zaubacorp.com/director/SHARMISTHA-HANSRAJ-KAJARIA/01629046"> SHARMISTHA HANSRAJ KAJARIA</a></p> 
</td><td><p>Director</p></td> 
<td><p>01 November 2012</p></td> 
<td><p><a href="javascript:">View other directorships</a></p></td></tr> 

업데이트

: - 두 번째 클래스에서 정보를 얻을 및 정보에 Dictionary 먼저 클래스를 사용하여 접수로 추가처럼 여기에 두 클래스는 서로에 순차적으로 의존한다.

답변

1

이 시도 :

soup = bs.BeautifulSoup(html, 'html.parser') 

trs = soup.find_all('tr', attrs={'class' : 'accordion-toggle main-row'}) 
trs.append(soup.find_all('tr', attrs={'class' : 'row text-good'})) 

for tr in trs: 
    tds = tr.find_all('td') 
    for td in tds: 
     print(td.p.text) 

상태를 반복하는 동안 tr 클래스를 확인하기 위해 :

if(' '.join(tr.get('class') == 'YOUR_CLASS'): 
    #Do something 

tag.get() 반환 목록 대신 문자열을 당신이 분리 된 수업에 참여 할 수 있도록.

+0

tr - "accordion-toggle main-row"와 "row text-good"두 가지 클래스를 사용해야합니다. 첫 번째 클래스는 다른 정보를 얻고 두 번째 클래스는 다른 정보를 얻는 데 사용됩니다. –

+0

코드에서 반복되는 현재 태그의 클래스를 검사 할 수있는 방법이 있습니까? tr.hasClass ('thisClass') : tds = tr.find_all ('td') tds : tds : print (td.p.text) ''' –

+0

대답을 업데이트하여 두 번째 클래스를 포함하도록했습니다. (더 많은 클래스가 포함되어 있으면 추가하지 않고 정규식을 사용하여 한 줄을 사용하는 것이 더 좋습니다. 그렇습니다. 반복하는 동안 클래스를 확인할 수는 있지만 왜 –