2014-10-21 3 views
1

BeautifulSoup 4를 통해 Share per earnings 데이터를 this page에서 추출하려고합니다.BeautifulSoup4 : 파싱 된 테이블 데이터가 누락되었습니다.

데이터를 구문 분석 할 때 기본값 인 lxml과 HTML 5 파서를 사용하면 테이블 정보가 누락됩니다. 나는 이것이 Javascript와 관련이 있으며 나는 PyV8을 구현하여 스크립트를 BS4 용으로 읽을 수있는 HTML로 변환하려고 노력하고 있다고 생각한다. 문제는 여기에서 어디로 가야할지 모르겠다.

실제로 이것이 내 문제인지 아십니까? 저는 많은 게시물을 읽었으며 오늘 저에게는 매우 큰 두통이었습니다. 아래는 간단한 예입니다. financeWrap에는 테이블 정보가 있지만 beautifulSoup는 테이블 정보가 비어 있음을 나타냅니다.

import requests 
from bs4 import BeautifulSoup 

url = "http://financials.morningstar.com/ratios/r.html?t=AAPL&region=usa&culture=en-US" 

response = requests.get(url) 
soup_key_ratios = bs(response.content, 'html5lib') 
financial_tables = soup_key_ratios.find("div", {"id":"financeWrap"}) 
print financial_tables 

# Output: <div id="financeWrap"> 
#   </div> 
+3

@Begueradj 재미있는 관찰입니다. 나는 당신이 대답을 찾을 수있을 정도로 충분히 열심히 본다면 그것을 정상적으로 발견했습니다! – BryceD

+1

@BryceDoganer 'beautifulsoup'로 질문에 태그를 답니다. 그것은 당신이 신속하게 좋은 대답을받는 데 도움이 될 것입니다. –

+0

아마도 나는 뭔가를 놓치고 있지만'http : // ... en-US'이 문자열로 인용되지 않는 이유가 무엇입니까? – alexwlchan

답변

2

웹 사이트에서 Ajax를 통해 들어오는 데이터를 가져 오는 중입니다. 제공 한 링크로 이동하여 브라우저를 통해 소스를 보면 데이터에 내용이 없어야합니다.

Firebug과 같은 콘솔 관리자를 사용하면 URL에 대한 Ajax 요청이있는 것을 볼 수 있습니다. 이는 beautifulsoup을 통해 구문 분석 할 수 있습니다 (아마도 - 시도하지 않았거나 보지 못했습니다.) 데이터 구조에서).

이것은 웹 사이트의 ToS에 대한 가능성이 있음을 유의하십시오.

+0

대단합니다! 이것이 내가 말하고 싶은 것입니다. – WeizhongTu

+0

@Duniyadnd 지적 해 주셔서 감사합니다. 나는 그 라인을 따라 무엇인가와 관련이 있어야한다고 생각했다. 요청 링크를 찾는 방법을 알지 못했다. Firebug를 살펴보고 ToS도 살펴 보겠습니다. – BryceD

관련 문제