미국 주식 데이터 수집 #5 업종(섹터)/산업 정보 가져오는 방법
안녕하세요, 오랜만에 미국 주식 데이터 수집 Tip을 남기네요. 최근 댓글로 Sector 정보를 제공해달라고 요청하신 분이 있어서 오늘 급하게 작업을 해보았습니다. 사실 쉬운 방법이 있을까해서 검색을 해보았는데, 따로 나오는게 없어서 직접 코드를 작성해보았습니다. 완벽한 방법은 아니지만, 필요로 하시는 분이 있을까 해서 포스팅을 작성해봅니다.
더 쉽게 업종(섹터)/산업 정보를 가져올 수 있는 방법을 아시는 분은 댓글로 공유해주세요~!
우선 제가 기존에 사용하던 Yahoo_fin 라이브러리에서는 업종 정보를 조회하는 함수가 따로 없더라구요. 그래서 Yahoo Finance에 들어가 어디에 업종정보가 있는지 찾아보았습니다. 사실 업종 정보를 꼭 Yahoo Finance에서 찾아야만 하는 것은 아니고, invest.com이나 IEX 등 다른 주식 정보 제공하는 사이트에서 찾아도 상관은 없습니다 : )
찾았습니다! 바로 Profile 탭에 들어가면 Sector(s)와 Industry 정보를 제공하고 있는 것을 확인할 수 있습니다. 이제 소스코드로 이 정보를 가져오는 방법에 대해 알려드리겠습니다. 우선 이 페이지의 URL을 살펴보면,
finance.yahoo.com/quote/MSFT/profile?p=MSFT
빨간색으로 표기된 부분에 종목 코드(티커)가 들어가고 있습니다. 여기서 종목코드 부분을 AAPL이나 TSLA등 다른 종목의 코드를 입력하면 해당 기업의 Profile 페이지가 열립니다. 그리고 이를 이용해서 Sector/Industry 정보를 반환하는 함수를 만들었습니다.
def get_stock_sector(ticker):
url = "https://finance.yahoo.com/quote/{}/profile?p={}".format(ticker, ticker)
html = requests.get(url).text
soup = BeautifulSoup(html, "html.parser")
sector = soup.select('span[class = "Fw(600)"]')[0].text
industry = soup.select('span[class = "Fw(600)"]')[1].text
return [sector, industry]
BeautifulSoup을 이용해서 해당 페이지의 html 코드를 가져오고 그 중 Sector와 Industry에 해당하는 부분을 찾아서 추출했습니다. span[class = "Fw(600)"] 부분이 Sector와 Industry를 찾는 조건입니다. 이는 Yahoo Finance의 페이지가 그렇게 만들어져있어서 그렇고, 페이지 소스가 바뀌면 위의 조건으로는 찾을 수 없게 될 수도 있습니다. 그럴 때는 다시 페이지를 분석해서 맞는 조건을 찾아야 하죠. 하지만 업종 정보는 자주 바뀌는 것이 아니기 때문에 한 번 찾아서 정리해두면, 주간별로 Update할 필요는 없을 것 같습니다.
Sector와 Industry 정보가 DB에 잘 저장되었습니다. 다음주 정보부터 Sector와 Industry 정보도 함께 제공될 예정이니 기대해주세요.
공감과 댓글, 공유는 큰 힘이 됩니다!
도움이 되셨다면 널리널리 알려주세요😉