编辑:我提供了我用来试图找出这个问题的确切源代码。
我正在尝试使用 Python 2.7 和 lxml 从 Yahoo Finance 中提取有关“总资产”的数据。我试图从中提取此信息的页面示例是http://finance.yahoo.com/q/bs?s=FAST+Balance+Sheet&annual。
我已经成功地从 Smartmoney 中提取了“总资产”的数据。我能够解析的 Smartmoney 页面的一个示例是http://www.smartmoney.com/quote/FAST/?story=financials&timewindow=1&opt=YB&isFinprint=1&framework.view=smi_emptyView。
这是我为解决此问题而设置的特殊测试脚本:
import urllib
import lxml
import lxml.html
url_local1 = "http://www.smartmoney.com/quote/FAST/?story=financials&timewindow=1&opt=YB&isFinprint=1&framework.view=smi_emptyView"
result1 = urllib.urlopen(url_local1)
element_html1 = result1.read()
doc1 = lxml.html.document_fromstring (element_html1)
list_row1 = doc1.xpath(u'.//th[div[text()="Total Assets"]]/following-sibling::td/text()')
print list_row1
url_local2 = "http://finance.yahoo.com/q/bs?s=FAST"
result2 = urllib.urlopen(url_local2)
element_html2 = result2.read()
doc2 = lxml.html.document_fromstring (element_html2)
list_row2 = doc2.xpath(u'.//td[strong[text()="Total Assets"]]/following-sibling::td/strong/text()')
print list_row2
我可以从 Smartmoney 页面获取有关总资产的数据行,但是当我尝试解析 Yahoo Finance 页面时,我得到的只是一个空列表。
Smartmoney页面表格行源代码为:
<tr class="odd bold">
<th><div style='font-weight:bold'>Total Assets</div></th>
<td> 1,684,948</td>
<td> 1,468,283</td>
<td> 1,327,358</td>
<td> 1,304,149</td>
<td> 1,163,061</td>
</tr>
雅虎页面表格行源代码为:
<tr>
<td colspan="2"><strong>Total Assets</strong></td>
<td align="right"><strong>1,684,948 </strong></td>
<td align="right"><strong>1,468,283 </strong></td>
<td align="right"><strong>1,327,358 </strong></td>
</tr>