首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从美丽的汤元素中提取原始字符串位置

从美丽的汤元素中提取原始字符串位置
EN

Stack Overflow用户
提问于 2018-01-12 08:52:59
回答 1查看 3K关注 0票数 6

使用美汤解析长期复杂的html文档时,有时需要准确地找到匹配元素的原始字符串中的位置。我不能简单地搜索字符串,因为可能有多个匹配的元素,我将失去BS4解析DOM的能力。鉴于这一最低限度的工作实例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import bs4

html = "<div><b>Hello</b>  <i>World</i></div>"
soup = bs4.BeautifulSoup(html,'lxml')

# Returns 22
print html.find("World")

# How to get this to return 22?
print soup.find("i", text="World")

如何使bs4提取的元素返回22?

EN

回答 1

Stack Overflow用户

发布于 2018-08-17 05:14:43

我知道你的问题是“世界”可能被写了很多遍,但你想要获得一个特定事件的位置(不知何故,你知道如何识别)。

你可以用这个解决办法。我敢打赌还有更优雅的解决方案,但这应该会使它:

考虑到这个html:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import bs4

html = """<div><b>Hello</b>  <i>World</i></div>
          <div><b>Hello</b>  <i>Foo World</i></div>
          <div><b>Hello</b>  <i>Bar World</i></div>"""

soup = bs4.BeautifulSoup(html,'lxml')

如果我们想获得Foo世界的地位,我们可以:

  1. 拿上标签
  2. 引入一些我们知道它不存在于html其余部分的唯一字符串
  3. 获取我们添加的字符串的位置。 导入bs4 html =“Hello World Hello”“desired_tag = bs4.BeautifulSoup(html,'html.parser') #1 desired_tag= soup.find("i",text="Foo World") #2 desired_tag.insert(0,"some_unique_string")打印(str(汤))“”将显示: Hello some_unique_stringFoo World Hello“#3 print(str(汤).find(”some_unique_string“))”“58”
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48230684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文