선택자 사용법

soup.select('태그명')
soup.select('.클래스명')
soup.select('#아이디명')
# class 명 내의 띄어쓰기(공백)은 '.'으로 바꾸어 쓰거나, 조건이 겹치지 않는다면 띄어쓰기를 기준으로 class들을 분리하고 마지막 class만 써주세요.
# 위의 단순한 3가지 형태만 쓸 경우 여러 요소가 선택될 수도 있습니다.
# 예: soup.select('a')는 문서 내의 모든 <a></a> 요소를 찾습니다.
# 이를 좀 더 구체화해서 아래처럼 어떤 경로를 거쳐 요소를 찾아야 되는지 명시할 수 있습니다. 
soup.select('상위태그명 > 하위태그명 > 하위태그명')
soup.select('상위태그명.클래스명 > 하위태그명.클래스명')
# 앞의 예에서처럼 여러 <li>를 가질 때 몇 번째 <li> 인지를
# 부모의 몇 번째 자식인지 명시해서 지정할 수도 있습니다. 
# 몇 번쨰 자식인지 명시하지 않으면 첫번째부터
soup.select('.클래스명:nth-child(자식의순서)')

# 태그와 속성값으로 찾는 방법
soup.select('태그명[속성="값"]')

# 한 개만 가져오고 싶은 경우
soup.select_one('위와 동일')

클래스 선택하기

image.png

위와 같이 클래스가 3개라면 soup.select(”.sc-300a8231-7.eaXxft.cli-title-metadata-tiem”)으로 공백. 으로 교체한 뒤 사용 nth:child를 명시하지 않으면 여러개의 클래스를 가진 태그 중 첫번째인 1994의 태그가 가져와짐

클래스 내의 텍스트 가져오기

ss = soup.select(”.sc-300a8231-7.eaXxft.cli-title-metadata-tiem”).text 결과 = 1994

태그 내의 속성 지정해서 가져오기

# 특정 property 속성을 가진 meta 태그 찾기
meta_tag = soup.find('meta', property='og:title')
meta_tags = soup.find_all('meta', property=True)  # 모든 property 속성이 있는 meta 태그
for tag in meta_tags:
    print(tag.get('property'), "->", tag.get('content'))
meta_tag = soup.select_one('meta[property="og:description"]')

태그 내의 속성 가져오기

# 특정 meta 태그 찾기
meta_tag = soup.find('meta', property='og:description')

# content 속성 값 가져오기
if meta_tag:
    content_value = meta_tag.get('content')
    print("Content Value:", content_value)
else:
    print("Meta tag not found.")
# 모든 meta 태그의 content 속성 가져오기
meta_tags = soup.find_all('meta', attrs={'content': True})

for tag in meta_tags:
    print(tag.get('property'), "->", tag.get('content'))