2017-12-07 5 views
1

나는 아름다운 수프를 사용하여 yahoo finance 페이지를 파싱하는 것에 대해 빠른 질문이 있습니다.Python Beautiful Soup - 야후 재무 데이터, 분기 별 vs 분기

다음은 데이터를 추출하려는 페이지의 예입니다.

https://finance.yahoo.com/quote/AAPL/cash-flow?p=AAPL

나는 성공적으로 사용 BeautifulSoup로에서 데이터를 추출 할 수 있어요하지만 분기 별 데이터 대 연간 사이를 전환하는 방법을 알아낼 수 없습니다. 따라서 연간 데이터 만 추출 할 수 있습니다. 분기별로 전환 할 때 URL이 변경되지 않는 것 같습니다. 브라우저 검사에서, 나는 아름다운 수프를 사용하여 처리하는 방법을 잘 모르는 테이블을 토글하는 것 같습니다.

누군가에게 의견이 있으면 궁금합니다. 감사합니다.

+0

자바 스크립트 변경 데이터 소스처럼 보이지만 json에서 데이터를 추출해야하지만 소스 코드에서 jsons 양을 보면 쉽지는 않을 것입니다. –

+0

셀레늄을 사용하여 분기 버튼을 실제로 클릭해야한다고 생각했는데 (아마?) 그 후에 테이블을 구문 분석 한 것 같습니까? 셀레늄에 대한 경험이 없기 때문에 이것이 가능한지 확실하지 않습니다. –

+0

훨씬 쉽습니다. 나는 jsons에서 약간 파고 있었지만 결국 포기했다. 일부 jsons는 너무 커서 이해할 수 없다. –

답변

1

페이지에서 json을 분리하고 모든 연간 및 분기 현금 흐름표를 얻을 수 있습니다.

url = 'https://finance.yahoo.com/quote/AAPL/financials?p=AAPL' 
html = requests.get(url).text 
soup = BeautifulSoup(html,'html.parser') 

soup_script = soup.find("script",text=re.compile("root.App.main")).text 
json_script = json.loads(re.search("root.App.main\s+=\s+(\{.*\})",soup_script)[1]) 
fin_data = json_script['context']['dispatcher']['stores']['QuoteSummaryStore'] 

cash_yr = fin_data['cashflowStatementHistory']['cashflowStatements'] 
cash_qtrs = fin_data['cashflowStatementHistoryQuarterly']['cashflowStatements'] 

대차 대조표 (balanceSheetHistory, balanceSheetHistoryQuarterly) 및 손익 계산서 (incomeStatementHistory, incomeStatementHistoryQuarterly)도있다.