backend/데이터분석

selenium을 통한 중고나라 크롤링

seul chan 2016. 11. 23. 15:51

중고나라

*selenium 활용한 크롤링

+frame 변환까지

 

*중고나라 키워드(+page)를 입력하면 키워드별 제목, url, 가격 등을 표로 일목요연하게 정리해서 보여주기... 

 

-11.23~

현재 중고나라 맥북 프로의 글 제목만 크롤링 완료

 

추후 url, 가격 등의 정보 (+사진이 있으면 사진도)를 표로 (pandas 활용) 만들어서 업로드?

------------------------------------------

# vim 파일 활용해서 

from selenium import webdriver

driver = webdriver.Firefox()

driver.get("https://nid.naver.com/nidlogin.login")

# id 입력

id_input_element = driver.find_element_by_css_selector("#id")

id_input_element.send_keys("<id>")

# pw 입력

pw_input_element = driver.find_element_by_css_selector("#pw")

pw_input_element.send_keys("<password>")

# 네이버 로그인 완료 => 추후에 @로 만들어보기

submit_element = driver.find_element_by_css_selector(".btn_global")

submit_element.click()

 

keyword = input("찾으시려는 키워드를 입력하세요:")

n = int(input("찾으시려는 페이지 수를 입력하세요:"))

 

driver.get("http://cafe.naver.com/joonggonara.cafe?iframe_url=/ArticleList.nhn%3Fsearch.clubid=10050146%26search.boardtype=L%26viewType=pc")

css_selector = "input#topLayerQueryInput"

search_inpupt_element = driver.find_element_by_css_selector("input#topLayerQueryInput")

#키워드 입력

search_inpupt_element.send_keys(keyword)

#검색 버튼 눌러서 찾기

search_button_element = driver.find_element_by_css_selector(

    "form[name='frmBoardSearch'] a"

)

search_button_element.click()

#프레임 변환

iframe_element = driver.find_element_by_css_selector("iframe#cafe_main")

driver.switch_to_frame(iframe_element)

# 다시 원래대로 frame 복귀 

# driver.switch_to_default_content()

 

#글 제목/ 본문 찾기 (frame 내에서))

titles_whole = []

for i in range(n+1):

    css_selector_page = "table.Nnavi a"

    page_buttons= driver.find_elements_by_css_selector(css_selector_page)

    page_buttons[n-1].click()

 

    css_selector_title = "td.board-list "

    title_elements_2 = driver.find_elements_by_css_selector("td.board-list")

 

    for title_element_2 in title_elements_2:

        title_text = title_element_2.text

        titles_whole.append(title_text)

print(titles_whole+"\n")

# 완료; 

# 추후 추가할 사항: 키워드/페이지를 입력하면 키워드/ 페이지별로 제목을 싸그리 크롤링

# 추가적으로 id가 겹치는 글은 제외할 수 있도록?

-------------------------------------------