gpt4 book ai didi

clojure - 如何在enlive中选择特定类型的第n个元素?

转载 作者:行者123 更新时间:2023-12-05 00:06:55 24 4
gpt4 key购买 nike

我正在尝试从具有基于表格的布局的页面中抓取一些数据。因此,要获取一些数据,我需要在正文中的第一个表内的第 5 个表内的第 2 个表内的第 3 个表中获取一些数据。我正在尝试使用 enlive,但无法弄清楚如何使用 nth-of-type 和其他选择器步骤。更糟糕的是,有问题的页面在正文中只有一个顶级表,但是 (select data [:body :> :table]) 由于某种原因返回 6 个结果。我到底做错了什么?

最佳答案

对于 nth-of-type ,下面的例子有帮助吗?

user> (require '[net.cgrand.enlive-html :as html])
user> (def test-html
"<html><head></head><body><p>first</p><p>second</p><p>third</p></body></html>")
#'user/test-html
user> (html/select (html/html-resource (java.io.StringReader. test-html))
[[:p (html/nth-of-type 2)]])
({:tag :p, :attrs nil, :content ["second"]})

不知道第二个问题。您的方法似乎适用于幼稚的测试:
user> (def test-html "<html><head></head><body><div><p>in div</p></div><p>not in div</p></body></html>")
#'user/test-html
user> (html/select (html/html-resource (java.io.StringReader. test-html)) [:body :> :p])
({:tag :p, :attrs nil, :content ["not in div"]})

有机会查看您的实际 HTML 吗?

更新: (回应评论)

这是另一个示例,其中返回“第二个 <p> 内的 <div> 内的第二个 <div> 内的任何内容”:
user> (def test-html "<html><head></head><body><div><p>this is not the one</p><p>nor this</p><div><p>or for that matter this</p><p>skip this one too</p></div></div><span><p>definitely not this one</p></span><div><p>not this one</p><p>not this one either</p><div><p>not this one, but almost</p><p>this one</p></div></div><p>certainly not this one</p></body></html>")
#'user/test-html
user> (html/select (html/html-resource (java.io.StringReader. test-html))
[[:div (html/nth-of-type 2)] :> :div :> [:p (html/nth-of-type 2)]])
({:tag :p, :attrs nil, :content ["this one"]})

关于clojure - 如何在enlive中选择特定类型的第n个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2695701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com