BeautifulSoup에서 특정 태그의 내용을 가져오는 방법 자세히 보기
7368 단어 BeautifulSoup특정 태그
모든 태그를 반복합니다.
soup.find_all('a')
모든 페이지에 라벨 a가 포함된 html 문장을 찾아서 목록 형식으로 저장합니다.찾은 탭은 for로 결과를 훑어보거나purify로 링크, 문자 등 결과를 얻을 수 있습니다.
#
links=[]
txts=[]
tags=soup.find_all('a')
for tag in tags:
links.append(tag.get('href')
txts.append(tag.txt) # txts.append(tag.get_txt())
html의 속성명을 획득:
atr=[]
tags=soup.find_all('a')
for tag in tags:
atr.append(tag.p('class')) # a , p class
find_all () 의 관련 사용 사례:실례BeautifulSoup 중국어 문서
1. 문자열
가장 간단한 필터는 문자열이다.검색 방법에 문자열 매개 변수를 입력하면 Beautiful Soup은 문자열과 일치하는 내용을 찾습니다. 다음 예는 문서의 모든 태그를 찾는 데 사용됩니다.
soup.find_all('b')
# [<b>The Dormouse's story</b>]
2. 정규 표현식정규 표현식을 매개 변수로 전송하면 Beautiful Soup은 정규 표현식의 match()를 통해 내용을 일치시킵니다.다음 예에서는 b로 시작하는 모든 태그를 찾습니다. 이 표시와 태그는 모두 찾아야 합니다.
import re
for tag in soup.find_all(re.compile("^b")):
print(tag.name)
# body
# b
다음 코드는 모든 이름에't'가 포함된 태그를 찾아냅니다.
for tag in soup.find_all(re.compile("t")):
print(tag.name)
# html
# title
3. 목록목록 매개 변수가 전송되면 Beautiful Soup은 목록의 요소와 일치하는 내용을 반환합니다.다음 코드는 문서의 모든 태그와 태그를 찾습니다.
soup.find_all(["a", "b"])
# [<b>The Dormouse's story</b>,
# <a class="sister" href="http://example.com/elsie" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="link1">Elsie</a>,
# <a class="sister" href="http://example.com/lacie" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="link2">Lacie</a>,
# <a class="sister" href="http://example.com/tillie" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="link3">Tillie</a>]
4. 메서드(사용자 정의 함수, find_all 전송)적절한 필터가 없으면 요소 매개 변수만 받아들일 수 있는 방법을 정의할 수 있습니다 [4]. 이 방법이 True로 돌아가면 현재 요소가 일치하고 발견되고, 그렇지 않으면 False로 되돌아옵니다.
다음 방법은 현재 요소를 검증했습니다. 만약class 속성을 포함하지만 id 속성을 포함하지 않으면 True로 돌아갑니다.
def has_class_but_no_id(tag):
return tag.has_attr('class') and not tag.has_attr('id')```
반환 결과 중라벨은 라벨이 없습니다. 라벨은'id'를 정의했기 때문에 되돌려주지 않았습니다.'class'속성이 정의되어 있지 않기 때문입니다.
다음 코드는 문자에 포함된 모든 노드 내용을 찾습니다.
from bs4 import NavigableString
def surrounded_by_strings(tag):
return (isinstance(tag.next_element, NavigableString)
and isinstance(tag.previous_element, NavigableString))
for tag in soup.find_all(surrounded_by_strings):
print tag.name
# p
# a
# a
# a
# p
5. CSS로 검색CSS 클래스 이름에 따라 tag를 검색하는 기능은 매우 실용적이지만, CSS 클래스 이름을 표시하는 키워드 class는 Python에서 보존된 글자이며,class를 매개 변수로 사용하면 문법 오류를 초래할 수 있습니다.Beautiful Soup의 4.1.1 버전부터 class_매개변수 검색에 지정된 CSS 클래스 이름이 있는 태그:
soup.find_all("a", class_="sister")
# [<a class="sister" href="http://example.com/elsie" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="link1">Elsie</a>,
# <a class="sister" href="http://example.com/lacie" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="link2">Lacie</a>,
# <a class="sister" href="http://example.com/tillie" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="link3">Tillie</a>]
또는:
soup.find_all("a", attrs={"class": "sister"})
# [<a class="sister" href="http://example.com/elsie" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="link1">Elsie</a>,
# <a class="sister" href="http://example.com/lacie" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="link2">Lacie</a>,
# <a class="sister" href="http://example.com/tillie" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="link3">Tillie</a>]
6. text 매개 변수에 따라 찾기텍스트 매개 변수를 통해 문서의 문자열 내용을 찾을 수 있습니다.name 매개 변수의 선택 가능한 값과 같이text 매개 변수는 문자열, 정규 표현식, 목록, True를 받아들입니다.예:
soup.find_all(text="Elsie")
# [u'Elsie']
soup.find_all(text=["Tillie", "Elsie", "Lacie"])
# [u'Elsie', u'Lacie', u'Tillie']
soup.find_all(text=re.compile("Dormouse"))
[u"The Dormouse's story", u"The Dormouse's story"]
def is_the_only_string_within_a_tag(s):
""Return True if this string is the only child of its parent tag.""
return (s == s.parent.string)
soup.find_all(text=is_the_only_string_within_a_tag)
# [u"The Dormouse's story", u"The Dormouse's story", u'Elsie', u'Lacie', u'Tillie', u'...']
텍스트 파라미터는 문자열을 검색하는 데 사용되지만, 다른 파라미터와 혼합하여 태그를 필터할 수 있습니다.뷰티풀 수프가 찾을 거예요.string 방법과text 매개 변수 값이 일치하는 tag.다음 코드는 내용에'Elsie'가 포함된 태그를 검색하는 데 사용됩니다.
soup.find_all("a", text="Elsie")
# [<a href="http://example.com/elsie" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="sister" id="link1">Elsie</a>]
7. 현재 레이블의 하위 노드만 찾기tag 호출find_all () 방법으로 Beautiful Soup은 현재 tag의 모든 자손 노드를 검색합니다. tag의 직접 자손 노드만 검색하려면 매개 변수recursive=False를 사용할 수 있습니다.
간단한 문서:
<html>
<head>
<title>
The Dormouse's story
</title>
</head>
...
recursive 매개 변수의 검색 결과를 사용할지 여부:
soup.html.find_all("title")
# [<title>The Dormouse's story</title>]
soup.html.find_all("title", recursive=False)
# []
이 글은 BeautifulSoup에서 특정 태그의 내용을 얻는 방법에 대한 상세한 설명입니다. 더 많은 관련 BeautifulSoup에서 특정 태그의 내용을 얻으려면 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
GIS×Python~지오코딩으로 위치 정보 취득~상권 분석할 때 목표물이나 시설의 위치 정보를 갖고 싶거나 한다. 일일이 손 입력해서 검색하는 것이 조금 귀찮아서 지오코딩을 반자동화해 보았다. 사쿠토 1시간 정도로 쓴 코드이므로 특히 어려운 일은 하지 않고, 보다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.