인프런 커뮤니티 질문&답변

새벽별님의 프로필 이미지

작성한 질문수

[2024 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

-

유튜브 크롤링/키워드 별 크롤링 방법에서 에러발생합니다.

작성

·

847

·

수정됨

1

div#metadata-line > span

위 그림에서 처럼 이것은 인식 합니다만

위 그림에서와 같이 div#metadata-line > span::nth-child(1) 은 인식 하지 못하는 것 같습니다.

info.find_elements(By.CSS_SELECTOR, "div#metadata-line span")[0]

selenium에서는 이렇게 해서 해결했습니다만...

views = info.select("div#metadata-line > span")[1].text

views = info.select("div#metadata-line  span")[1].text

BeautifulSoup에서는 위 코드도 오류가 발생합니다.

답변 3

1

새벽별님의 프로필 이미지
새벽별
질문자

 

views = info.select_one("div#metadata-line > span:nth-of-type(1)").text
date = info.select_one("div#metadata-line > span:nth-of-type(2)").text

감사합니다. ^^

해보니 잘됩니다.

스타트코딩님의 프로필 이미지
스타트코딩
지식공유자

nth-of-type이 직관적이어서 저는 요걸 자주 씁니다.

n 번째 있는 요소를 선택하고 싶을 때 아주 유용하죠

완강까지 화이팅입니다!

1

스타트코딩님의 프로필 이미지
스타트코딩
지식공유자

div#metadata-line > span:nth-child(1) 대신에

div#metadata-line > span:nth-of-type(1)을 이용해 보세요

 

  • nth-child : 모든 자식의 순서에서 찾음

  • nth-of-type: 해당하는 자식 태그 요소에서의 순서를 찾음


0

새벽별님의 프로필 이미지
새벽별
질문자

# 조회수
views_date = info.select_one("div#metadata-line").text.split("•")[1].strip().replace("조회수 ", "")
views = "조회수 " + views_date.split("회")[0] + "회"

# 날짜
date = views_date.split("회")[1]

이렇게 해서 해결했습니다.