일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 알고리즘
- 주식
- 수리 키친
- 올레 13코스
- 제주 올레 7-1
- 러시아
- 신한 레버리지 wti 원유 선물 ETN
- 올레 14-1 코스
- 산노루
- 모바일 올레 패스
- 나스닥
- 제주 올레
- 선형분석
- 코스피
- S&P 500
- 미국 증시
- 원유
- 제주 올레 7
- 올레 스테이
- 카페 우다
- 코로나 바이러스
- 사우디
- Quant
- 카페 제라
- 폭락
- 셀레니움
- 트럼프
- 맨드롱국수
- 이분탐색
- 안뜨르
- Today
- Total
생각이 담아두는 곳
3. 셀레니움으로 필요한 정보 텍스트로 가져오기 본문
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/
에서 지난번에 원하는 회사를 입력하게끔 하고 들어가는 것까지 구현했다면 이번에는 원하는 정보를 가져오는 작업을 처리했다.
내가 가져와야 하는 정보는 아래와 같다.
회사 설립연도, 직전라운드, 일시(마지막 투자), 총투자금, 투자자리스트
이 중 투자자리스트를 제외하고 나머지는 가져오는데 성공했다. 그 코드가 위 코드와 같다.
지금까지 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 |