[PYTHON] Beautifulsoup - nextSibling
PYTHONBeautifulsoup - nextSibling
다음 내용을 사용하여 "My home address"내용을 가져 오려고하지만 AttributeError가 있습니다.
address = soup.find(text="Address:")
print address.nextSibling
<td><b>Address:</b></td>
<td>My home address</td>
td 태그를 탐색하고 콘텐츠를 가져 오는 좋은 방법은 무엇입니까?
해결법
-
==============================
1.문제는
가 아닌 NavigableString을 발견 한 것입니다. 또한 nextSibling은 다음 NavigableString 또는 Tag를 찾을 수 있으므로 를 사용하더라도 예상대로 작동하지 않습니다. 문제는
가 아닌 NavigableString을 발견 한 것입니다. 또한 nextSibling은 다음 NavigableString 또는 Tag를 찾을 수 있으므로 를 사용하더라도 예상대로 작동하지 않습니다. 이것이 당신이 원하는 것입니다 :
address = soup.find(text="Address:") b_tag = address.parent td_tag = b_tag.parent next_td_tag = td_tag.findNext('td') print next_td_tag.contents[0]
또는보다 간결하게 :
print soup.find(text="Address:").parent.parent.findNext('td').contents[0]
사실 당신은 할 수 있어요.
print soup.find(text="Address:").findNext('td').contents[0]
findNext는 next를 반복해서 호출하기 때문에 next는 다음 요소를 매칭 될 때까지 반복해서 파싱합니다.
==============================2.bs4를 사용한다면 이것을 시도하십시오 :
bs4를 사용한다면 이것을 시도하십시오 :
print soup.find(string="Address:").find_next('td').contents[0]
==============================3.findChildren을 사용하면 table에 있다고 가정하고 테이블에서 td를 반복 할 수 있습니다. 이상적으로 먼저 표를 찾을 수 있습니다.
findChildren을 사용하면 table에 있다고 가정하고 테이블에서 td를 반복 할 수 있습니다. 이상적으로 먼저 표를 찾을 수 있습니다.
table = soup.find('table') >>> for td in table.findChildren('td'): ...: print td.text ...: ...: Address: My home address
또는 주소를 검색하고 테이블 컨테이너를 가져올 수 있습니다.
>>> import re >>> search = re.compile('Address') >>> table = soup.find(text=search).parent.parent.parent
from https://stackoverflow.com/questions/5999747/beautifulsoup-nextsibling by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬에서 함수에 타임 아웃을 추가하는 법 (0) 2018.10.20 [PYTHON] python 숫자 식을 LaTeX로 변환하기 (0) 2018.10.20 [PYTHON] numpy 배열로 NaN 값을 전달하는 가장 효율적인 방법 (0) 2018.10.20 [PYTHON] 여러 개의 독립적 인 셀러리 대기열을 유지하는 방법 (0) 2018.10.20 [PYTHON] 위키 마크 업을위한 파이썬 모듈 (0) 2018.10.20