반응형
내 소스 코드는 다음과 같습니다.
<h3>Header3 (Start here)</h3>
<ul>
<li>List items</li>
<li>Etc...</li>
</ul>
<h3>Header 3</h3>
<ul>
<li>List items</li>
<ul>
<li>Nested list items</li>
<li>Nested list items</li></ul>
<li>List items</li>
</ul>
<h2>Header 2 (end here)</h2>
모든 중첩 된 li 태그를 포함하여 첫 번째 "h3"태그 다음에 오는 모든 "li"태그와 다음 "h2"태그에서 멈추기를 원합니다.
firstH3 = 수프 .find ( 'h3')
시작하고 싶은 장소를 정확하게 찾습니다.
firstH3 = soup.find('h3') # Start here
uls = []
for nextSibling in firstH3.findNextSiblings():
if nextSibling.name == 'h2':
break
if nextSibling.name == 'ul':
uls.append(nextSibling)
각각 필요한 LI 컨텐츠가있는 UL 목록을 제공합니다.
"uls"목록의 일부 :
<ul>
...
<li>Air Bud series:
<ul>
</ul>
</li>
...
</ul>
최신 정보:
최종 코드 :
lis = []
for ul in uls:
for li in ul.findAll('li'):
if li.find('ul'):
break
lis.append(li)
for li in lis:
print li.text.encode("utf-8")
If-> break는 중첩 된 LI가 이제 복제되었으므로 UL을 포함하는 LI를 버립니다.
인쇄 출력은 다음과 같습니다.
- 102 명의 달마시안 (2000)
- 10th & Wolf(2006)
- 11:14 (2006)
- 12:08 East of Bucharest (2006)
- 13 년 30 일 (2004)
- 1408 (2007)
- ...
감사
해결 방법
.findAll ()
은 중첩 된 li
요소에서 작동합니다.
for ul in uls:
for li in ul.findAll('li'):
print(li)
산출:
<li>List items</li>
<li>Etc...</li>
<li>List items</li>
<li>Nested list items</li>
<li>Nested list items</li>
<li>List items</li>
참조 페이지 https://stackoverflow.com/questions/4362981
반응형
'파이썬' 카테고리의 다른 글
파이썬 텍스트 인코딩을 결정하는 방법은 무엇입니까? (0) | 2020.10.21 |
---|---|
파이썬 __getitem__ 메서드 이해 (0) | 2020.10.21 |
파이썬 try / catch를 사용하지 않고 int 값이 Python Enum에 있는지 어떻게 테스트합니까? (0) | 2020.10.21 |
파이썬 requirements.txt 대 setup.py (0) | 2020.10.21 |
파이썬에서 문자열에 대한 객체 (0) | 2020.10.21 |
댓글