我正在尝试使用python从雅虎财务中提取财务数据。 下面是一个图像链接,以圆圈形式显示我想要检索的数据。它有数据表的组织,但我不知道从图中所示的数字开始。
这是我试图从雅虎财经中提取的数字代码位置的图像,包含表名和td代码。
我意识到我必须以某种方式使用td代码来查找提取所需的数字但是我不确定我需要实现的基本命令是什么。
这是我试图抓取的数据表示例的link
答案 0 :(得分:1)
您抓取的页面由JavaScript呈现,请求和urllib无法处理JavaScript。我建议你使用selenium和BeautifulSoup来提取数据。 这是禁用JavaScript时:
您想要的数据位于此网址中:
http://financials.morningstar.com/ajax/ReportProcess4HtmlAjax.html?&t=XNAS:AAPL®ion=usa&culture=en-US&ops=clear&cur=&reportType=is&period=12&dataType=A&order=asc&columnYear=5&curYearPart=1st5year&rounding=3&view=raw&r=378724&callback=jsonp1482077238548&_=1482077239651
我把它放在bs4中,你可以自己获取数据:
import requests, bs4, json
r = requests.get('http://financials.morningstar.com/ajax/ReportProcess4HtmlAjax.html?&t=XNAS:AAPL®ion=usa&culture=en-US&ops=clear&cur=&reportType=is&period=12&dataType=A&order=asc&columnYear=5&curYearPart=1st5year&rounding=3&view=raw&r=378724&callback=jsonp1482077238548&_=1482077239651')
js = r.text.strip('jsonp1482077238548()')
html_str = json.loads(js)['result']
soup = bs4.BeautifulSoup(html_str, 'lxml')
出:
<html>
<body>
<div id="baseline" style="display:none">
<div>
156508000000
</div>
<div>
170910000000
</div>
<div>
182795000000
</div>
<div>
233715000000
</div>
<div>
215639000000
</div>
<div>
215639000000
</div>
</div>
<div class="left ">
<div class="r_xcmenu rf_table_left">
<div class="rf_header ">
<div class="lbl " currency="USD" fiscalyearend="September" fyenumber="9" id="unitsAndFiscalYear">
</div>
</div>
<div class="rf_crow1" id="label_i1" style="_height:16px; _float:none;">
<div class="lbl">
Revenue
</div>
<div class="chart_contain_free" id="chart_i1">
<div class="chart_icon">
</div>
</div>
</div>