작성
·
442
1
선생님 검색창을 클릭을 못하고 있는데 코드 그대로 작성 헀는데 제 나름 오타를 찾아보겠다고 찾아 봤지만 놓쳤는지 뭐가 원인인지 모르겠어요ㅠㅠ
코드는 이렇게 작성헀습니다.
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
# 브라우저 생성
browser = webdriver.Chrome('c:/chromedriver.exe')
# mac 의 경우 /User/내거로/Documents/chromedriver
# 웹 사이트 열기
browser.get('https://www.naver.com')
browser.implicitly_wait(10) # 로딩이 끝날 때까지 10초 기다림
# 쇼핑 메뉴 클릭하기
browser.find_element(By.CSS_SELECTOR, "a.nav.shop").click()
time.sleep(2)
# 검색창 클릭
search = browser.find_element(By.CSS_SELECTOR, "input.co_srh_input._input")
search.click()
# 검색어 입력
search.send_keys("아이폰13")
search.send_keys(Keys.ENTER)
# 스크롤 전 높이.
before_h = browser.execute_script("return window.scrollY")
# 무한 스크롤
while True:
#맨 아래로 스크롤을 내린다.
browser.find_element(By.CSS_SELECTOR, "body").send_keys(Keys.END)
# 스크롤 사이 페이지 로딩 시간
time.sleep(1)
# 스크롤 후 높이
after_h = browser.execute_script("return window.scrollY")
if after_h == before_h:
break
before_h = after_h
#상품 정보 div
items = browser.find_elements(By.CSS_SELECTOR, ".basicList_info_area__TWvzp")
for item in items :
name = item.find_elements(By.CSS_SELECTOR, ".basicList_title__VfX3c").text # text만 추출
pirce = item.find_elements(By.CSS_SELECTOR, ".price_num__S2p_v").text
link = item.find_elements(By.CSS_SELECTOR, ".price_num__S2p_v > a").get_attribute('href')
print(name, pirce, link)
답변 2
0
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import csv
browser = webdriver.Firefox() # firefox 브라우저를 먼저 설치해야 줘야 작동함
browser.implicitly_wait(10) # 페이지가 로딩될 때까지 최대 10초까지 기다려줌
browser.get("https://www.naver.com")
# 쇼핑메뉴 클릭
browser.find_element(By.CSS_SELECTOR, 'a.nav.shop').click()
time.sleep(2)
# 검색창 클릭
search = browser.find_element(By.CSS_SELECTOR, 'input._searchInput_search_text_fSuJ6')
search.click()
# 검색어 입력
search.send_keys('아이폰 13')
search.send_keys(Keys.ENTER) # enter 입력
time.sleep(1)
# 스크롤 전 높이
before_h = browser.execute_script("return window.scrollY")
# 무한 스크롤
while True:
# 맨 아래로 스크롤 내린다.
browser.find_element(By.CSS_SELECTOR, "body").send_keys(Keys.END) # End키
# 스크롤 사이 페이지 로딩 시간
time.sleep(1)
# 스크롤 후 높이
after_h = browser.execute_script("return window.scrollY")
if after_h == before_h:
break
before_h = after_h
# 파일 만들기(csv)
f = open(r"D:\python_Workspace\crawling\startCoding_crawling\03_네이버_쇼핑_크롤링\data.csv", "w", encoding='cp949', newline='')
csvWriter = csv.writer(f)
# 상품 정보 div
items = browser.find_elements(By.CSS_SELECTOR, ".basicList_info_area__TWvzp")
for item in items:
name = item.find_element(By.CSS_SELECTOR, ".basicList_title__VfX3c").text
try:
price = item.find_element(By.CSS_SELECTOR, ".price_num__S2p_v").text # 판매중지된 것 있음
except:
price = "판매중단"
link = item.find_element(By.CSS_SELECTOR, ".basicList_title__VfX3c > a").get_attribute('href')
print("\n" + name, price, link)
csvWriter.writerow([name, price, link]) # 데이터 쓰기
0
페이지가 업데이트 되었기 때문에 선택자가 바뀌었습니다.
바뀐 선택자로 테스트 해보세요 :)
ex) 검색창 선택자 ->
input._searchInput_search_text_3CUDs