从雅虎财务报表中提取数字,愿意通过 Pay Pal 支付一些钱
Extracting Numbers from Yahoo Financial statement, willing to pay some money through Pay Pal
我正在尝试使用 python 从 yahoo finance 中提取财务数据。
下面有一个 link 到一个图像,它在圆圈中显示我正在尝试检索的数据。它具有数据组织 table 但是我不知道从图片中显示的给定值从哪里开始。
这是我试图从 yahoo finance 中提取的数字代码位置的图像,带有 table 名称和 td 代码。
我意识到我必须以某种方式使用 td 代码来找到提取所需的数字,但是我不确定我需要执行哪些基本命令。
这是 link 我正在尝试抓取的数据 table 的示例
您抓取的页面由 JavaScript 呈现,请求和 urllib 无法处理 JavaScript。我建议您使用 selenium 和 BeautifulSoup 来提取数据。
这是禁用 JavaScript 时的情况:
你要的数据在这个url:
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>
我正在尝试使用 python 从 yahoo finance 中提取财务数据。 下面有一个 link 到一个图像,它在圆圈中显示我正在尝试检索的数据。它具有数据组织 table 但是我不知道从图片中显示的给定值从哪里开始。
这是我试图从 yahoo finance 中提取的数字代码位置的图像,带有 table 名称和 td 代码。
我意识到我必须以某种方式使用 td 代码来找到提取所需的数字,但是我不确定我需要执行哪些基本命令。
这是 link 我正在尝试抓取的数据 table 的示例
您抓取的页面由 JavaScript 呈现,请求和 urllib 无法处理 JavaScript。我建议您使用 selenium 和 BeautifulSoup 来提取数据。
这是禁用 JavaScript 时的情况:
你要的数据在这个url:
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>