使用 python lxml xpath 迭代表中的所有行

2023-12-24

这是我想要从中提取数据的html页面的源代码。

网页:该表格位于页面底部

     <html>
               <table class="clCommonGrid" cellspacing="0">
                        <thead>
                            <tr>
                                <td colspan="3">Kommande matcher</td>
                            </tr>
                            <tr>
                                <th style="width:1%;">Tid</th>
                                <th style="width:69%;">Match</th>
                                <th style="width:30%;">Arena</th>
                            </tr>
                        </thead>

                        <tbody class="clGrid">

                    <tr class="clTrOdd">
                        <td nowrap="nowrap" class="no-line-through">
                            <span class="matchTid"><span>2014-09-26<!-- br ok --> 19:30</span></span>



                        </td>
                        <td><a href="?scr=result&amp;fmid=2669197">Guldhedens IK - IF Warta</a></td>
                        <td><a href="?scr=venue&amp;faid=847">Guldheden Södra 1 Konstgräs</a> </td>
                    </tr>

                    <tr class="clTrEven">
                        <td nowrap="nowrap" class="no-line-through">
                            <span class="matchTid"><span>2014-09-26<!-- br ok --> 13:00</span></span>



                        </td>
                        <td><a href="?scr=result&amp;fmid=2669176">Romelanda UF - IK Virgo</a></td>
                        <td><a href="?scr=venue&amp;faid=941">Romevi 1 Gräs</a> </td>
                    </tr>

                    <tr class="clTrOdd">
                    <td nowrap="nowrap" class="no-line-through">
                        <span class="matchTid"><span>2014-09-27<!-- br ok --> 13:00</span></span>



                    </td>
                    <td><a href="?scr=result&amp;fmid=2669167">Kode IF - IK Kongahälla</a></td>
                    <td><a href="?scr=venue&amp;faid=912">Kode IP 1 Gräs</a> </td>
                </tr>

                <tr class="clTrEven">
                    <td nowrap="nowrap" class="no-line-through">
                        <span class="matchTid"><span>2014-09-27<!-- br ok --> 14:00</span></span>



                    </td>
                    <td><a href="?scr=result&amp;fmid=2669147">Floda BoIF - Partille IF FK </a></td>
                    <td><a href="?scr=venue&amp;faid=218">Flodala IP 1</a> </td>
                </tr>


                        </tbody>
                </table>
        </html>

现在我有这段代码,它实际上产生了我想要的结果。

import lxml.html
url = "http://gbgfotboll.se/information/?scr=table&ftid=51168"
html = lxml.html.parse(url)
for i in range(12):
    xpath1 = ".//*[@id='content-primary']/table[3]/tbody/tr[%d]/td[1]/span/span//text()" %(i+1)
    xpath2 = ".//*[@id='content-primary']/table[3]/tbody/tr[%d]/td[2]/a/text()" %(i+1)
    time = html.xpath(xpath1)[1]
    date = html.xpath(xpath1)[0]
    teamName = html.xpath(xpath2)[0]
    if date == '2014-09-27':
        print time, teamName

给出结果:

13:00 罗梅兰达 UF - IK 处女座

13:00 代码 OF - 英国 Kongahälla

14:00 Floda BoIF - Partille IF FK

现在回答问题。我不想使用带有范围的 for 循环,因为它不稳定,该表中的行可能会发生变化,如果超出范围就会崩溃。所以我的问题是如何以安全的方式进行迭代。这意味着它将迭代表中可用的所有行。不多也不少。另外,如果您有任何其他建议使代码更好/更快,请继续。


以下代码将迭代任意行数。 rows_xpath将直接过滤目标日期。 xpath 也在 for 循环之外创建一次,所以它应该更快。

import lxml.html
from lxml.etree import XPath
url = "http://gbgfotboll.se/information/?scr=table&ftid=51168"
date = '2014-09-27'

rows_xpath = XPath("//*[@id='content-primary']/table[3]/tbody/tr[td[1]/span/span//text()='%s']" % (date))
time_xpath = XPath("td[1]/span/span//text()[2]")
team_xpath = XPath("td[2]/a/text()")

html = lxml.html.parse(url)

for row in rows_xpath(html):
    time = time_xpath(row)[0].strip()
    team = team_xpath(row)[0]
    print time, team
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 python lxml xpath 迭代表中的所有行 的相关文章

随机推荐

  • 使用 XStream 序列化 Hibernate 对象的问题

    我一直面临这个问题 序列化时的 hibernate 对象会生成意外的 xml 其中包含 Hibernate 中的所有检测代码 在序列化对象之前 我们对对象进行了一些清理 但是 是否有标准选项可用于直接序列化对象 我以前没有使用过 XStre
  • 并发冲突:UpdateCommand 影响了预期 1 条记录中的 0 条。 DB concurrencyException 未处理

    我定义了 2 个数据集和 2 个数据适配器 每个数据集一个 创建后 我为 2 个 dataAdapter 中的每一个定义了一个 SqlCommandBuilder 到这里一切都很好 我可以使用 dataAdapter1 Update dat
  • 如何清楚地解释Keras中units参数的含义?

    我想知道 LSTM 在 Keras 中是如何工作的 在本教程 https machinelearningmastery com time series prediction lstm recurrent neural networks py
  • WCF 服务端点 localhost 混淆

    我很困惑为什么有些东西会起作用 我正在配置这样的 wcf 服务
  • 如何让 Git 在控制台窗口中正确显示 UTF-8 编码的路径名?

    我有 UTF 8 格式的文件名 git 可以正常处理它们 它将正确创建文件 并且 github 页面也可以正确显示它 除了它会在控制台中显示它 如下所示 是否可以使 git 在控制台中正确显示超出 ASCII 127 的 UTF 8 编码字
  • SOAP-ENV:WSDL 中的错误

    我创建了 SOAP Web 服务 而且我对 SOAP 还很陌生 在创建网络服务时 我面临以下问题
  • 如何将向量拆分为列 - 使用 PySpark [重复]

    这个问题在这里已经有答案了 Context 我有一个DataFrame有 2 列 单词和向量 其中 向量 的列类型是VectorUDT 一个例子 word vector assert 435 323 324 212 我想得到这个 word
  • 多输入多变量数据可视化

    我试图通过从多个输入文件中读取多元数据模型来可视化它们 我正在寻找一个简单的解决方案来可视化从多个输入 csv 文件读取的多个类别数据 没有 各个文件中输入的行数范围为 1 到 10000 格式与 4 列 csv 文件的所有输入相同 Inp
  • 从 C# 项目的资源区域加载图像

    我的项目中有一张图像存储在 Resources myimage jpg 中 如何动态将此图像加载到 Bitmap 对象中 您使用的是 Windows 窗体吗 如果您使用 属性 资源 UI 添加了图像 则可以从生成的代码访问该图像 因此您可以
  • 无需用户名的 HTTP 身份验证

    我正在 Node js 中创建一个 HTTP 服务器 并且我想向只有我会使用的页面添加密码 这Basic https developer mozilla org en US docs Web HTTP Authentication Basi
  • 如何添加节点终端Visual Studio Code?

    我尚未成功 但我重新安装了 Visual Studio Code 并且无法再次向其中添加节点终端 请不要说我也可以使用 bash 运行并使用 powershell 这两个在Vscode中默认可达 但我想更改默认终端并更改为节点终端 不是 p
  • 如何使用 ggplot2 + directlabels 的标签自定义名称

    我将 ggplot2 与 directlabels 包一起使用geom line 情节 我希望其中一个标签上写着 X M 然而 在我的data frame X M 作为列名被重命名为 X M 我找不到有关如何提供direct label具有
  • 计算身体宽度百分比时出现问题

    我需要构建一个经典的 960px 布局 并且必须将 960px 转换为 所以 我应该使用960px 16px 60 right 注 960px 主体宽度16px 字体大小 问题 body width 60 960 16px 比 body w
  • 如何禁用添加到 ASP.NET Core 日志中的 ANSI/VT100 颜色代码

    我们在 Google Cloud 中托管 ASP NET Core 服务 来自 Stack Driver 的日志始终使用 ANSI VT100 颜色代码 如下所示 40m 32minfo 39m 22m 49m 有没有办法告诉 ASP NE
  • HQL 查询检查集合大小是否为 0 或空

    我尝试生成一个 HQL 查询 其中包含具有空约会集合的用户 由 OneToMany 映射 SELECT u FROM User u JOIN u appointments uas WHERE u status 1 AND uas time
  • HSQLDB 可以处理几百万行吗?

    我正在开发一个需要数据库的单用户应用程序 大多数表都具有合理数量的数据 但也有一些表可能会增长到数百万行 我的任何查询都不会返回大型结果集 有人知道 HSQLDB 是否可以处理这么大量的行吗 From HSQLDB 官方页面 http ww
  • 内存层次结构 - 为什么寄存器昂贵?

    我明白那个 Faster访问时间 gt More昂贵的 Slower访问时间 gt Less昂贵的 我还了解到寄存器是层次结构的顶部 并且具有最快的访问时间 我很难研究的是why这么贵吗 据我所知 寄存器实际上是直接内置于 ALU 中的电路
  • 给定年份和月份的月份函数的最后一天

    多次单步执行代码后 我无法找到具体导致此错误的原因 我希望有人以前见过这个错误 这就是我的think与问题相关 Load packages library lubridate MONTH lt 1 YEAR lt 2018 Last day
  • 如何使用 ie11 在 Threejs 中加载 gltf 场景

    我使用 Three js 及其 gltfloader js 编写了一个简单的 html 来加载 gltf 模型 它在 Mozilla 上完美运行 但即使没有错误 它也不会显示在 ie11 上 我尝试过使用 es6 promise polly
  • 使用 python lxml xpath 迭代表中的所有行

    这是我想要从中提取数据的html页面的源代码 网页 该表格位于页面底部 table class clCommonGrid cellspacing 0 thead tr td Kommande matcher td tr tr th th t