当前位置: 首页 > 知识库问答 >
问题:

find_all保存标签顺序吗?

祁嘉木
2023-03-14

我希望使用BeautifulSoup来解析一些HMTL。我有一张几排的桌子。我试图找到一个满足特定条件(特定属性值)的行,并在稍后的代码中使用该行的索引。

问题是:find_all()是否保留它返回的结果集中我的行的顺序?

我没有在文档中找到这一点,谷歌搜索只能得到以下答案:

“BeautifulSoup标记不会跟踪其在页面中的顺序,不会。”

但他没有说他是从哪里得到这些信息的。

我很乐意得到一个答案,但更乐意看到一个指向某个留档的指针来解释这一点。

编辑:dstudeba用next_sibling指出了这个'变通方法'的方向。

from bs4 import BeautifulSoup
soup = BeautifulSoup(open('./mytable.html'), 'html.parser')
row = soup.find('tr', {'class':'something', 'someattr':'somevalue'})
myvalues = []
while True:
    cell = row.find('td', {'someattr':'cellspecificvalue'})
    myvalues.append(cell.get_text())
    row = row.find_next_sibling('tr', {'class':'something', 'someattr':'somevalue'})
    if not row:
        break

这将按照单元格内容在html文件中的显示顺序获取所需的单元格内容。

然而,我仍然想知道在BeautifulSoup文档中的哪里可以找到find_all()是否保留了顺序。这就是为什么我不接受德斯图德巴的答案。(我的支持票没有显示出来,还没有足够的代表:P)

共有1个答案

东方华荣
2023-03-14

根据我的经验,find_all确实维护了秩序。但是,为了确保您可以使用find_all_next方法,该方法使用find_next方法来保存顺序。这里是留档的链接。

 类似资料:
  • 问题内容: 关于JPA,我有以下问题: 我可以将元素的顺序保存在java.util.List中吗?在我的应用程序中,将元素放入列表的顺序很重要,但是从数据库中获取这些集合后,顺序却不一样(符合预期)。您能告诉我解决这个问题的方法吗? PS:我放入集合中的实体中没有字段可用来订购它们。 罗森 问题答案: 在JPA 1中,有一些骇人听闻的方法可以做到这一点,但是切换到JPA 2提供程序是最容易的。您正

  • 本文向大家介绍a标签click和href执行顺序探讨,包括了a标签click和href执行顺序探讨的使用技巧和注意事项,需要的朋友参考一下 前提:项目中开始绑定document click事件, 在document子类的一个a标签也绑定了click时间, 想要实现效果,就是click事件触发完成后 document事件不触发。即组织事件冒泡,加了阻止事件冒泡方法(e.stopPropagation

  • 主要内容:顺序表的初始化顺序表,全名 顺序存储结构,是 线性表的一种。通过《 什么是线性表》一节的学习我们知道,线性表用于存储逻辑关系为“一对一”的数据,顺序表自然也不例外。 不仅如此,顺序表对数据的物理存储结构也有要求。 顺序表存储数据时,会提前申请一整块足够大小的物理空间,然后将数据依次存储起来,存储时做到数据元素之间不留一丝缝隙。 例如,使用顺序表存储集合  ,数据最终的存储状态如图 1 所示: 图 1 顺序存储结

  • 接口说明 该接口已经废弃,请使用【单体化、标绘、压平 -> GEOJSON上传】接口 如果需要标识模型上某个位置信息,可以通过调用该接口,来记录标识的位置 可以设置的内容有名称、位置信息以及标注图标和字体颜色 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/marker/1.0.0/add 是否需要登录 是 请求字段说明

  • 问题内容: Java Set是否保留顺序?有一种方法将Set返回给我,并且假定数据是有序的,但是遍历Set时,数据是无序的。有没有更好的方法来解决这个问题?是否需要更改方法以返回Set以外的内容? 问题答案: 该Set接口不提供任何订购保证。 它的子接口代表根据某种标准排序的集合。在Java 6中,有两个实现的标准容器。他们是和。 除了SortedSet接口之外,还有类。它记住元素插入到集合中的顺

  • 我试图从流中获取订单地图。我有下一个代码: 在这里,我尝试对数据流进行排序,我认为地图也是有序的。但我错了。我认为调用collect(Collectors.toMap())不会保存流的顺序。有我如何做到这一点的例子吗?