1
와 부모 요소의 첫 번째 자식을 얻기 나는 다음과 같은 HTML이 있습니다파이썬 - BeautifulSoup4
<table id="mytable">
<tr role="row">
<td>abc1</td>
<td>abc2</td>
<td>abc3</td>
<td class="hm">Data1</td>
<td>Data2</td>
<td class="hm">no</td>
<td class="hx">yes</td>
<td class="hm">Updated</td>
</tr>
<tr role="row">
<td>def1</td>
<td>def2</td>
<td>def3</td>
<td class="hm">Data3</td>
<td>Data4</td>
<td class="hm">no</td>
<td class="hx">no</td>
<td class="hm">Updated</td>
</tr>
<tr role="row">
<td>hij1</td>
<td>hij2</td>
<td>hij3</td>
<td class="hm">Data5</td>
<td>Data6</td>
<td class="hm">no</td>
<td class="hx">no</td>
<td class="hm">Updated</td>
</tr>
<tr role="row">
<td>klm1</td>
<td>klm2</td>
<td>klm3</td>
<td class="hm">Data7</td>
<td>Data8</td>
<td class="hm">no</td>
<td class="hx">yes</td>
<td class="hm">Updated</td>
</tr>
</table>
나는 아이 <td>
이있는 곳을 찾기 위해 다음을 수행하고 있으므로이 <tr>
태그의 배수가 있습니다 class="hx"
와 태그 yes
의 텍스트 :
if (Soup.find('table', {'id' : 'mytable'}).find('td', text='yes', attrs={'class' : 'hx'})):
print "Found 'yes'"
는하지만 발견되는 <tr>
의 첫 번째 <td>
태그에 관심이 있어요. 나는 다음을 수행했지만, 작동하지 않는 것 : 또는
print Soup.find('table', {'id' : 'mytable'}).find('td', text='yes', attrs={'class' : 'hx'}).parent.find('td')[0].text
, 다음 작품 그러나 나는 확실하지 않다 특히,이 일을 정말 쉬었 방법처럼 보인다 얼마나 많은 <td>
태그 두 사람 사이에 존재합니다 :
print Soup.find('table', {'id' : 'mytable'}).find('td', text='yes', attrs={'class' : 'hx'}).previousSibling.previousSibling.previousSibling.previousSibling.previousSibling.previousSibling.text
더 좋은 방법이 있습니까? 내가 놓친 게 있니? 두 번째 인쇄 변화에
던질 것인지? – RomanPerekhrest
올바른, 그래서'.previousSibling'의 모든 작업으로 두번째'print'하지만, 명시된 바와 같이, 얼마나 많은 다른'
물론, 방금 업데이트했지만, find ('td', text = 'yes', attrs = { 'class': 'hx'})'의 첫 번째 인스턴스를 원한다. 그래서'abc1'과'klm1'이 아니라'abc1' 만 출력해야합니다. – rjbogz
답변
:
에 :
찾기가 첫 번째 요소, 인덱스 너무 필요가 없습니다를 반환합니다.
편집
find_all('td')
에 두 번째 열 변화를find('td')
를 얻으려면. 이 목록을 반환합니다, 그래서 당신은 할 수 있습니다 : 분명히,
len(td_data) - 1
보다 큰 당신 지수는 당신이`Col1` 마지막에 인쇄 할 그래서IndexError
출처
2017-12-14 17:41:13 Harpal
그러면 두번째 컬럼을 얻는 방법은 무엇입니까? 말하자면, 나는'abc1'과'abc2' 둘 다 필요합니다. 편집 :'find ('td'). nextSibling'은'abc2'에 대한 트릭을하는 것처럼 보입니다. – rjbogz
편집을 참조하십시오. 'find_all'로 변경하면 각 열을 인덱스 할 수 있습니다. – Harpal
죄송합니다. 코드가 잘못되었습니다. 편집하기 전의 예에서, 이제는 고정되어 있습니다 – Harpal
관련 문제