인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

YIEBIG님의 프로필 이미지
YIEBIG

작성한 질문수

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

네이버지도 검색어입력중 태그 못찾는 문제

작성

·

289

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
 
 
안녕하세요! 강의 잘 듣고있습니다.
 
다름아니라 네이버지도 크롤링 검색어 입력구현 과정중 검색박스를 찾는 과정에서 생긴 질문인데요,
 
강의자분께서 하신대로 클래스 선택자(Input.input_serach)를 이용하면 잘 찾아지나,
똑같은 코드에 Id선택자로만 변경 할 시 검색어 입력이 제대로 구현되질 않습니다.
 
사실 클래스와 아이디가 모두 있을때, 아이디는 보통 고유한 값이기에 아이디를 쓰는게 좋다!라고 배워온 기억이 있어서 아이디로 시도했지 애초에 클래스로는 할 생각을 못했구요.... 크롬 개발자모드의 copy selcector 기능도 '#input_search1645599001993' 의 아이디로 선택하길래 오랫동안 고민하다가 안돼서 강의 들어서 클래스로 하면 되긴 하는구나,,,, 를 확인은 했습니다만
 
왜 ID선택자로는 안되고 클래스 선택자로 밖에 구현이 안되는지 궁금합니다! 아래는 강의듣고 복기한 코드에서 클래스 선택자를 아이디 선택자로만 바꾼 코드입니다.
 
감사합니다.
 
 
 
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

browser = webdriver.Chrome('./chromedriver')
browser.get('https://map.naver.com/v5/')
browser.implicitly_wait(10)
#browser.maximize_window()

# 검색창 입력
#search = browser.find_element_by_css_selector("input.input_search")
search = browser.find_element_by_css_selector("input#input_search1645599001993")
search.click() # 클릭 굳이 없어도 실행된다
time.sleep(1)
search.send_keys('강남역 맛집')
time.sleep(1)
search.send_keys(Keys.ENTER)
time.sleep(2)

답변 1

2

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

안녕하세요.

코딩을 가장 쉽게 알려주는 크리에이터, 스타트코딩입니다.

 

우선, 제가 강의에서 말씀 드린대로 잘 적용해 보셨습니다!! 

그런데 id 값으로는 잘 선택이 되지 않아서 황당하셨겠군요.

사실 이유는 간단합니다.

 

페이지를 새로고침해보면 id값이 매번 달라지는 것을 확인할 수 있습니다.

(현재 제가 테스트 했을 때 id 값은 input_search1645842479179 )

 

id와 class 값이 페이지 새로고침할 때마다 바뀌는 사이트가 종종있습니다.

 

 

1) 서버 구현할 때 필요해서 

2) 크롤링 방지 목적

 

제 생각에는 위 두 가지 정도 이유가 있어 보입니다.

 

도움이 되셨으면 좋겠습니다.

감사합니다.

- 스타트코딩 드림. 

YIEBIG님의 프로필 이미지
YIEBIG

작성한 질문수

질문하기