GOOD4ME

3. 해외 주식 지표 데이터 크롤링 [완] 본문

해외 주식 분석 프로젝트/크롤링

3. 해외 주식 지표 데이터 크롤링 [완]

de_youn 2022. 12. 6. 12:11
반응형

 

selenium to BeautifulSoup

지표 데이터 크롤링 기술이 확정되었고,
확정한 기술을 통해 크롤링 테스트를 완료하였다.

이번 테스트 및 작업에 대해 설명하기 전,
지표데이터 수집의 대상이 되는 사이트를
변경했음을 알린다.

야후파이낸스는 필요한 지표들이 여러 페이지(탭)에 나뉘어져있었고,
이번에 선정한 사이트는 필요한 지표들이 하나의 표 안에 통합되어있어
더 신속하고 효율적인 크롤링을 할 수 있었다.

 

크롤링 기술 변경
selenium 👉 BeautifulSoup

 

지난 포스팅에서 언급했듯이
웹에서 입력자동화가 필요없는 이상,
BeautifulSoup를 사용하는 것이
크롤링 속도가 더 빠르기 때문에 변경하였다.

 

사용한 구문 설명

 

# request.get 하위 함수
raise_for_status()

"""
요청/응답 코드가 200이 아니면
예외를 발생시키는 함수
"""
# BeautifulSoup 하위 함수
find()
findAll()

"""
BeautifulSoup를 통해 크롤링한 데이터에서
특정 요소(element)의 class나 id 등을 찾는 함수
"""
with ThreadPoolExecutor(max_workers=3) as executor:
  future_list = executor.map(crawling_data, tick_list)
  
"""
병렬처리를 위한 스레드 처리 함수
"""

 

개발 이슈

 

HTTPError: 503 Server Error: Service Temporarily Unavailable for url:

상기의 오류가 발생하여 찾아보니
헤더 정보를 추가하지 않아 발생한 것이었다.

Selenium이나 BeautifulSoup 모두 헤더 설정은 필수인듯 싶다.😂

headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'
        }
response = requests.get(url, headers=headers)

 

테스트 결과

 

beautifulsoup test

상기처럼 다양한 티커의 지표 데이터를
빠르게 크롤링이 가능한 것을 확인하였다.😀😁😁

반응형
Comments