생각이 담아두는 곳

4. 반복문을 통해, 원하는 데이터 엑셀로 저장하기 본문

CS_Project/WebCrawler_Venture

4. 반복문을 통해, 원하는 데이터 엑셀로 저장하기

Chang_Tree 2020. 3. 23. 13:57
from selenium import webdriver
import time
import pandas as pd

driver = webdriver.Chrome("/Users/growing/Projects/WC/chromedriver")

driver.get("https://thevc.kr/") #웹사이트 접속

time.sleep(120) #지연을 시키고 수동 로그인 후, 웹사이트 빈 공간 한 곳 클릭

firm_list = ["당근마켓","왓챠","우아한형제"] #여기다가 나중에 회사 리스트
results = []
for i in range(len(firm_list)):

    venture_search = driver.find_element_by_class_name("total_search") #검색창 클

    venture_search.clear()

    venture_search.send_keys(firm_list[i]) #검색창에 회사 입력
    driver.implicitly_wait(30)
    driver.find_element_by_xpath('/html/body/header/div[1]/div/div[1]/div[2]/ul/li/a').click()  #검색창 클릭

    founded_year = driver.find_element_by_css_selector(
        '#content > div.content_body > div > div:nth-child(1) > div:nth-child(4)').text  # 설립연도

    estimated_round = driver.find_element_by_class_name("estimated_round").text  # 현재 라운드

    investing_sum = driver.find_element_by_class_name("sum_invested").text  # 투자금

    invest_firm = driver.find_element_by_class_name('investors_list').text #투자사들

     #결과 담을 변수

    results.append([founded_year,estimated_round,investing_sum,invest_firm])


data = pd.DataFrame(results)
data.columns = ['founded_year','estimated_ROUND','investing_sum','invest_firm']

data.to_csv("test_v3.csv")


time.sleep(20)
driver.quit()

첫번째로, 지난번에 고민했던 로그인한 상태에서 투자사 리스트를 가져와야 했는데, 셀레니움에서 자동 로그인이 막혀 생기는 문제를 해결했다. 

 

결국 자동 로그인을 하는 건 힘들다 생각해, time.sleep 으로 프로세스를 멈춰놓고, 로그인을 수동으로 한 뒤, 나머지 프로세스를 진행시켰다. (캡챠 사진 선택 때문에, 2분을 멈췄다.)

 

여기서 왜 driver.implicitly_wait 을 안 쓰고 time.sleep 을 썼는가. 그 둘의 차이는 명백하다.

 

time.sleep의 경우, 뒤의 프로세스를 아예 멈추는 것이지만,

driver.implicitly_wait 은 단지, 이벤트 발생 전까지 대기를 시키는 것이다. 그 시간동안, 이벤트 발생하면 멈추는 것을 종료한다. 

(위 코드에서 회사명을 검색한 뒤, 밑에 바로 그 회사가 뜨지 않아 이벤트 발생까지 대기를 걸어놓고, 발생 시 그 회사를 클릭했다.)

 

firm_list 는 검색할 회사명을 넣어 놓은 곳인데, 이제 여기를 투자사들의 투자 회사들로 채워넣으면 된다. 

 

반복문을 돌리고, 그 결과를 results 라는 리스트에 리스트 형태로 담고 

 

pandas 의 DataFrame 을 이용해 데이터 프레임 형태로 바꾸고, 이것을 엑셀 파일로 내보냈다. 

 

각 데이터명에 맞게 컬럼을 수정했다. 보기 좋게 :)

 

아무튼 큰 고비 넘겼다!!

 

이제, 회사이름들을 담은 리스트가 있으면, 그 회사들의 설립연도, 투자금, 투자 진행 단계, 그 회사에 투자한 투자사들 리스트를 볼 수 있다. 

 

다만 아직, 각 단계별로 어느 회사가 투자했는지는 못했는데, 이를 해결해야 한다. 

(pre-A 단계에서 어느 회사들이 했는지 등등)

 

 

'CS_Project > WebCrawler_Venture' 카테고리의 다른 글

3. 셀레니움으로 필요한 정보 텍스트로 가져오기  (0) 2020.03.23
2. 개발의 시작.  (0) 2020.03.23
1. 전체적인 구도  (0) 2020.03.23
Comments