【问题标题】:Python: robust xpath for table in tr and td tags, eliminate unwanted dataPython:用于 tr 和 td 标记中的表的强大 xpath,消除不需要的数据
【发布时间】:2018-02-07 13:37:20
【问题描述】:

我需要可靠的方法来获取此 url "http://www.screener.com/v2/stocks/view/5131" 的 xpath

但是,在想要的数据之前有太多的空白,并且不可靠。

我需要的部分是下面的html中的11.48,9.05,11.53

 <div class="table-responsive">
                        <table class="table table-hover">
                            <tr>
                                <th>Financial Year</th>
                                <th class="number">Revenue ('000)</th>
                                <th class="number">Net ('000)</th>
                                <th class="number">EPS</th>
                                <th></th>
                            </tr>

                                                                    <tr>
                                    <td>30 Nov, 2017</td>
                                    <td class="number">205,686</td>
                                    <td class="number">52,812</td>
                                    <td class="number">11.48</td>
                                    <td></td>
                                </tr>

                                                                    <tr>
                                    <td>30 Nov, 2016</td>
                                    <td class="number">191,301</td>
                                    <td class="number">41,598</td>
                                    <td class="number">9.05</td>
                                    <td></td>
                                </tr>

                                                                    <tr>
                                    <td>30 Nov, 2015</td>
                                    <td class="number">225,910</td>
                                    <td class="number">51,082</td>
                                    <td class="number">11.53</td>
                                    <td></td>
                                </tr>

我的代码如下

from lxml import html
import requests
page = requests.get('http://www.screener.com/v2/stocks/view/5131')
output = html.fromstring(page.content)
output.xpath('//tr/td/following-sibling::td/text()')

如何更改代码,使其能够从上面的表格中稳健地获取三个数字?

我只想要输出11.48,9.05,11.53但我无法摆脱表格中的太多数据

【问题讨论】:

    标签: python html xpath lxml


    【解决方案1】:

    试试下面的 XPath 以获得所需的输出:

    //div[@id="annual"]//tr/td[position() = last() - 1]/text()
    

    【讨论】:

    • 它仍然返回一堆不需要的数据,尽管包含了理想的输出。但我想消除那些不需要的数据,只有理想的左边
    • 那是因为页面上有几个表...试试//div[@id="annual"]//tr/td[position() = last() - 1]/text()
    • 您能否详细说明它的工作原理?只是想以答案为答案。谢谢
    • last() 表示每个tr 中最后一个td 的索引。 td[position() = last()] 表示 返回 tr 中的最后一个 td 节点 并且应该返回空节点 (&lt;td&gt;&lt;/td&gt;) 所以我们需要获取的不是last(),而是last() - 1 才能获得倒数第二个td 需要的值。
    猜你喜欢
    • 2020-12-06
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    相关资源
    最近更新 更多