Python/lxml/xpath解析Yahoo-Finan

2024-09-25 00:34:06 发布

您现在位置:Python中文网/ 问答频道 /正文

编辑:我已经提供了确切的源代码,我正在试图解决这个问题。在

我正试图使用python2.7和lxml从yahoofinance中提取关于“总资产”的数据。我试图从中提取此信息的页面示例是http://finance.yahoo.com/q/bs?s=快速+资产负债+资产负债表和年度。在

我已经成功地从Smartmoney中提取了“总资产”的数据。我能够解析的Smartmoney页面的一个例子是http://www.smartmoney.com/quote/FAST/?story=financials&timewindow=1&opt=YB&isFinprint=1&;framework.view=smi\u空视图。在

下面是我为解决这个问题而设置的一个特殊测试脚本:

    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财经页面时,我得到的只是一个空列表。在

Smartmoney页面上表行的源代码是:

^{pr2}$

Yahoo页面上表格行的源代码是:

    <tr>
<td colspan="2"><strong>Total Assets</strong></td>
<td align="right"><strong>1,684,948&nbsp;&nbsp;</strong></td>
<td align="right"><strong>1,468,283&nbsp;&nbsp;</strong></td>
<td align="right"><strong>1,327,358&nbsp;&nbsp;</strong></td>
    </tr>

Tags: 数据textcomhttpurl源代码页面element
1条回答
网友
1楼 · 发布于 2024-09-25 00:34:06

包含语法错误,结尾应该是td/strong/text(),加上后面有一个]。我认为正确的问题是:

xpath('//td[strong[text()="Total Assets"]]/following-sibling::td/strong/text()')

结果:

^{pr2}$

在原始页面中,“Total Assets”<strong>容器有空格和换行符。对text()结果使用附加的normalize-space函数,如下所示:

xpath('//td[strong[normalize-space(text())="Total Assets"]]/following-sibling::td/strong/text()')

相关问题 更多 >