BeautifulSoup을 사용하여 노드의 자식을 찾는 방법
나는 모든 것을 얻고 싶습니다.<a>
의 자식인 태그<li>
:
<div>
<li class="test">
<a>link1</a>
<ul>
<li>
<a>link2</a>
</li>
</ul>
</li>
</div>
다음과 같은 특정 클래스의 요소를 찾는 방법을 알고 있습니다.
soup.find("li", { "class" : "test" })
하지만 나는 모든 것을 찾는 방법을 모릅니다.<a>
의 자식들인<li class=test>
하지만 다른 어떤 것도 아닙니다.
내가 선택하고 싶은 것처럼:
<a>link1</a>
사용해 보세요.
li = soup.find('li', {'class': 'text'})
children = li.findChildren("a" , recursive=False)
for child in children:
print(child)
DOC에는 모든 직접 자녀를 찾는 방법을 보여주는 초소형 섹션이 있습니다.
https://www.crummy.com/software/BeautifulSoup/bs4/doc/ #The-the-messages
첫 번째 직접 자식인 링크1을 원하는 경우:
# for only first direct child
soup.find("li", { "class" : "test" }).find("a", recursive=False)
모든 직접 자식을 원하는 경우:
# for all direct children
soup.find("li", { "class" : "test" }).findAll("a", recursive=False)
아마도 당신은 하고 싶을 것입니다.
soup.find("li", { "class" : "test" }).find('a')
사용해 보십시오.
li = soup.find("li", { "class" : "test" })
children = li.find_all("a") # returns a list of all <a> children of li
기타 주의사항:
찾기 메서드는 처음 발생한 하위 요소만 가져옵니다.find_all 메서드는 모든 하위 요소를 가져오고 목록에 저장됩니다.
"모든 것을 찾는 방법a
의 자식들인<li class=test>
하지만 다른 어떤 것도?"
아래 HTML이 주어졌을 때 (다른 HTML을 추가했습니다.<a>
와의 차이를 보여주다select_one
):
<div>
<li class="test">
<a>link1</a>
<ul>
<li>
<a>link2</a>
</li>
</ul>
<a>link3</a>
</li>
</div>
해결책은 자식 결합기를 사용하는 것입니다.>
) 두 개의 CSS 선택기 사이에 배치됩니다.
>>> soup.select('li.test > a')
[<a>link1</a>, <a>link3</a>]
첫 번째 아이만 찾으려는 경우:
>>> soup.select_one('li.test > a')
<a>link1</a>
또 다른 방법 - 반환하는 필터 함수 생성True
원하는 모든 태그에 대해:
def my_filter(tag):
return (tag.name == 'a' and
tag.parent.name == 'li' and
'test' in tag.parent['class'])
그럼 그냥 전화해요.find_all
다음과 같은 인수를 사용합니다.
for a in soup(my_filter): # or soup.find_all(my_filter)
print a
방금 이 답변을 우연히 발견하고 문서를 확인했습니다.soup.findChildren
는 더 이상 사용되지 않습니다(BS 4.9).사용할 수 있습니다.soup.children
대신 요소의 하위 요소가 아닌 요소의 직접 자식만 고려합니다.
li = soup.find('li', {'class': 'text'})
for child in li.children:
print(child)
설명서: https://www.crummy.com/software/BeautifulSoup/bs4/doc/ #유아 및 어린이
언급URL : https://stackoverflow.com/questions/6287529/how-to-find-children-of-nodes-using-beautifulsoup
'programing' 카테고리의 다른 글
jquery를 닫으려면 외부 메뉴를 클릭 (0) | 2023.08.24 |
---|---|
커서가 Javascript/jquery를 사용하는 텍스트 삽입 (0) | 2023.08.24 |
하위 항목 가져오기 및 공백 없음 (0) | 2023.08.24 |
package-lock.json 파일을 .gitignore에 추가해야 합니까? (0) | 2023.08.24 |
사용자 지정 원 단추 (0) | 2023.08.24 |