【问题标题】:Hi, I want help on making xpath嗨,我需要有关制作 xpath 的帮助
【发布时间】:2020-04-02 18:52:22
【问题描述】:

我想获得一些与 xpath 相关的帮助。

这是我要创建 xpath 的 html。

我需要产品类型和最大贷款规模的数据

“产品类型”数据为 -> 2 年固定利率,直至 2022 年 4 月 30 日

“最大贷款规模”数据为 -> 1000 万英镑

我需要一个 xpath 来根据部分选择数据 正如我上面提到的,我需要产品类型数据和最大贷款规模数据以及初始利息数据。 来自tbody。

<table aria-label="Fixed-rate mortgage" data-component-type="Table" class="table table-sortable table-join   table-default table-responsive" data-filtering-enabled="false">
    <thead>
        <tr>
           <th>
               <div class="aem-rte ">
                    <p>Product type</p>
                </div>
            </th>
            <th>
                <div class="aem-rte ">
                    <p>Max loan size</p>
                </div>
            </th>
            <th>
                <div class="aem-rte ">
                    <p>Initial interest
                        <br />
                    </p>
                </div>
            </th>
         
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>
                <div>
                    <div class="aem-rte ">
                        <p>2-year fixed rate until 30 April 2022</p>
                    </div>
                </div>
            </td>
            <td>
                <div>
                    <div class="aem-rte ">
                        <p>£10m</p>
                    </div>
                </div>
            </td>
            <td>
                <div>
                    <div class="aem-rte ">
                       <p>2.09%</p>
                    </div>
                </div>
            </td>
       </tr>
    </tbody>
</table> 

【问题讨论】:

  • 你想要的结果是什么样的?
  • 感谢您的回答。非常感谢。我需要获取与 相关的数据的 xpath,例如 Product Type 。如果我们通过定义索引,这将适用于某些情况。有多个表和多个 值。例如,如果我们为产品类型值提供索引 [1]。在某些情况下,如果它会在索引 2 或 3 上,那么它会给我们错误的数据。当前情况 Product Type 值存在于索引 1 上。但在某些情况下,它存在于索引 2 上,而在某些情况下,它不存在。我希望你现在明白了。那么我在这些情况下会做什么......

标签: python selenium xpath web-scraping scrapy


【解决方案1】:

试试这个 XPath-1.0 表达式:

//tbody/tr/td/div/div[@class='aem-rte ']/p[1]

如果您使用 XPath-2.0,您还可以使用 fn:string-join 函数创建一个分隔字符串,如下所示:

string-join(//tbody/tr/td/div/div[@class='aem-rte ']/p[1],' - ')

【讨论】:

    【解决方案2】:
    //tbody//tr[1]//td[1]/div[1]/p
    //tbody//tr[2]//td[2]/div[1]/p
    

    //p[contains(text(),'2-year fixed rate until 30 April 2022')]
    
    //p[contains(text(),'£10m')]
    

    【讨论】:

    • 我需要一个根据 "Product type" 获取数据的 xpath。类似于跟随兄弟姐妹。因为如果 tbody 中的数据会改变位置,那么它会给我错误的值。只有当我们创建一个与 相关的 xpath 时才有可能,比如产品类型、最大贷款规模
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 2016-05-14
    • 1970-01-01
    相关资源
    最近更新 更多