【问题标题】:Beautifulsoup locating elements in bs4.element.tag by div.div.div..?Beautifulsoup 通过 div.div.div.. 在 bs4.element.tag 中定位元素?
【发布时间】:2021-07-15 11:24:54
【问题描述】:

所以我有一个类型为 bs4.element.tag 的项目

> atag = item.a.div.div.div.div
  <div class="_1cRBf1"><div class="_3VombQ"></div></div>

说来话长,但我正在尝试使用 .div.a.span 或类似的东西来获取元素,我想从 atag 变量 () 中获取第二个元素

有没有办法让我喜欢

> atag = item.a.div.div.div.div[2]
  <div class="_3VombQ"></div>

# OR

> atag = item.a.div.div.div.div[class="_3VombQ"]
  <div class="_3VombQ"></div>

获取第二个 div?

【问题讨论】:

    标签: javascript html jquery css beautifulsoup


    【解决方案1】:

    你可以使用find_next()方法:

    item.a.div.div.div.div.find_next(class_="_3VombQ")
    

    【讨论】:

    • 是的,我已经知道了,但我想问是否有办法通过 .div.div.div[2] 或类似的方式找到它以获得第二个
    • @DHK 我编辑了我的答案。您可以使用find_next() 方法。 .find_next(class_="_3VombQ") 或(我不是很了解你的 HTML,但是:) .find_next('div')
    • 你也可以尝试使用.contents 例如:: ...div.contents[1]
    • 谢谢,很好奇,但如果我有“data-seq”或类似“id”而不是“class”,只需用“class_”更改它是否仍然相同?
    • @DHK 正确。对于 id,您使用 .find(id=MY-ID)。这有帮助吗?
    【解决方案2】:

    根据您对 MendelG 回答的评论,我假设您只想找到 div 或其他类型元素的第 n 个子元素...对吗?

    如果是这样,那很容易......只需执行类似的操作

    element = soup.select("item>a>div>div>div>div:nth-child(2)")
    

    这将返回一个列表。要打印它:

    print(element[0])
    

    您可以在https://www.w3schools.com/cssref/css_selectors.asp 使用大量的 css 选择器

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签