본문으로 바로가기

네이버 중고나라 게시글 데이터 수집

- selenium에서 iframe에 있는 데이터 수집

- https://cafe.naver.com/joonggonara.cafe

 

중고나라 : 네이버 카페

1초에 평균 4.5건의 신상품 등록! 찾는 그 제품, 중고나라에는 다 있다!

cafe.naver.com

from selenium import webdriver
from selenium.webdriver.common.by import By
import pandas as pd

url = "https://cafe.naver.com/joonggonara.cafe" # url 설정

# 1. 웹브라우져 열기 및 페이지 이동
driver = webdriver.Chrome()
driver.get(url)

# 2. 검색창에 "맥북"을 입력하고 검색 버튼 클릭
keyword = "맥북"
driver.find_element(By.CSS_SELECTOR, "#topLayerQueryInput").send_keys(keyword)
driver.execute_script("searchBoard();")

# 3. 게시글 목록 데이터 수집 : iframe
selector = ".article-board > table > tbody > tr"
elements = driver.find_elements(By.CSS_SELECTOR, selector)
print(len(elements))

# 3-1. iframe 으로 driver 이동
iframe = driver.find_element(By.CSS_SELECTOR, "#cafe_main")
print(iframe)

driver.switch_to.frame(iframe)
selector = ".article-board > table > tbody > tr"
elements = driver.find_elements(By.CSS_SELECTOR, selector)
print(len(elements))

element = elements[0]
title = element.find_element(By.CSS_SELECTOR, ".article").text
writer = element.find_element(By.CSS_SELECTOR, ".p-nick").text
print(title, writer)

# 3-2. 게시글 제목과 작성자를 담은 df생성
data = []
for element in elements:
    data.append({
        "title": element.find_element(By.CSS_SELECTOR, ".article").text,
        "writer": element.find_element(By.CSS_SELECTOR, ".p-nick").text,
    })
df = pd.DataFrame(data)
df.tail(2)

# 3-3. 원래 default frame 으로 이동
driver.switch_to.default_content()

# 4. 웹브라우져 종료
driver.quit()