생각이 담아두는 곳

3. 셀레니움으로 필요한 정보 텍스트로 가져오기 본문

CS_Project/WebCrawler_Venture

3. 셀레니움으로 필요한 정보 텍스트로 가져오기

Chang_Tree 2020. 3. 23. 11:31
from selenium import webdriver
from bs4 import BeautifulSoup

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

driver.get("https://thevc.kr/") #웹사이트 접속
# 자동 로그인 recapcha 때문에 안됨
# driver.find_element_by_class_name("join_toggle").click() #로그인 버튼 클릭
#
# user_name = "hawng000@naver.com"
# password = "autovc12!"
#
# driver.find_element_by_name('username').send_keys(user_name)
# driver.find_element_by_name('password').send_keys(password)
# driver.find_element_by_class_name("recaptcha-checkbox-checkmark").click()
# driver.implicitly_wait(1000)
# driver.find_element_by_name("login_btn").click()

venture_search = driver.find_element_by_class_name("total_search")

venture_search.clear()

venture_search.send_keys("당근마켓")
driver.implicitly_wait(10)
driver.find_element_by_xpath('/html/body/header/div[2]/div/div[1]/div[2]/ul/li[1]/a/img[1]').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 #투자금

driver.implicitly_wait(10000000)


driver.quit()

 

셀레니움으로 https://thevc.kr/

 

더브이씨 (THE VC) - 한국 스타트업 투자 데이터베이스

한국 스타트업의 투자 소식을 확인하고 스타트업, 액셀러레이터, 벤처캐피탈을 찾아보세요. 한국 스타트업 투자 생태계를 파악하는 가장 빠른 방법 - THE VC

thevc.kr

에서 지난번에 원하는 회사를 입력하게끔 하고 들어가는 것까지 구현했다면 이번에는 원하는 정보를 가져오는 작업을 처리했다. 

 

내가 가져와야 하는 정보는 아래와 같다. 

 

회사 설립연도, 직전라운드, 일시(마지막 투자), 총투자금, 투자자리스트 

 

이 중 투자자리스트를 제외하고 나머지는 가져오는데 성공했다. 그 코드가 위 코드와 같다.

 

지금까지 class_name이 있는 경우, find_element_by_class_name 이라는 함수를 이용해 가져온 후, text 함수를 통해 변환 시켰고 

없는 경우는 , css_selector나 xpath를 이용해 가져왔다. 어차피 나는 그 안에 있는 텍스트가 필요한 거니까.

 

여기서 주의해야할게 한 개가 있다! 

 

같은 이름의 클래스가 존재한다면?

보게 되면 내가 원하는 연혁, 즉 설립연도를 가지고 있는 class 명이 basic_info info_box 이다. 

 

문제는 다른 박스들이 여러개 존재하는 것인데, 클래스명으로 가져오는 경우, 불필요한 정보까지 웹사이트에서 긁어 오게 된다. 

 

이를 해결할 방법은 간단하다. xpath나 css_selector를 이용하면 그 부분만 가져올 수 있다. 

 

이렇게

그러면 그 부분에 대한 정보만 긁어서 텍스트로 변환 시켜 가져올 수 있다! 

 

마지막으로 하나 해결 못한 것이 있는데, 바로 투자자리스트다. 

 

위에서 말한 것처럼 자동 로그인이 진행된 뒤, 가져와야 하는데 이 자동로그인이 골치 아프다. 

 

위 사이트는 봇매크로를 방지하려고 recaptcha 라는 봇 방지 시스템을 로그인 시, 요구하는데 이를 셀레니움으로 해결할 방법을 아직 못 찾았다. 이 경우 두 가지 해결방법이 있을 수 있을 것 같다. 

 

1. 방법을 찾아, 셀레니움으로 로그인해서 쉽게 가져오기 

 

2. 방법을 못 찾는 경우, 신문기사를 통해 스크랩해서 가져오기. 

 

2번째 방법은 손실되는 정보가 클 것 같아 끌리지 않는다... 어렵다. 

 

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

4. 반복문을 통해, 원하는 데이터 엑셀로 저장하기  (0) 2020.03.23
2. 개발의 시작.  (0) 2020.03.23
1. 전체적인 구도  (0) 2020.03.23
Comments