问题标签 [enlive]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
43 浏览

clojure - 活跃:将节点向量粉碎在一起

所以我终于意识到我可以使用选择器来限制页面节点中激活变换的部分,这样我就可以创建不相交节点的向量。

很多话想说:

所以这会返回类似..

太棒了,活跃节点耶!

现在我有几个转换方式相同。

我的问题是:如何将所有结果向量(?)混合在一起?

0 投票
1 回答
74 浏览

html - 活跃起来——

试图添加一个— 在两个 div 之间使用 Enlive 但是

只返回实际文本 & mdash; 而不是画一个——

想法?

0 投票
1 回答
77 浏览

clojure - 使用 Enlive 匹配一组 TD 标签中的特定 TD 标签

我刚刚开始使用 Elive 进行 HTML 屏幕抓取任务。如果我想要下表的第二个和第四个 TD 节点中的文本,我将如何指定选择器?我通读了教程,但没有找到任何关于如何指定 XPath 内容的示例:

html/body/table/tr/td[2]/td[4](假设索引从 1 开始)

我需要从这两个 TD 节点中捕获文本值。

0 投票
2 回答
187 浏览

clojure - Clojure:部分更改 Enlive 中的属性值

我有这个test.html文件,其中包含:

想要定义一个仅更改 html attr 值的一部分的模板:

这将呈现:

谢谢你的帮助!

0 投票
0 回答
44 浏览

clojure - Enlive 无法解析内部跨度

我正在尝试从 Apple 产品页面http://www.apple.com/sg/shop/browse/home/specialdeals/ipad中提取原始数据

除了价格,我可以得到所有的身体内容。

有趣的是,enlive 只能解析出下面的,没有价格数据。

我是否遗漏了导致解析器忽略子跨度数据的内容?

0 投票
2 回答
777 浏览

clojure - 如何使用enlive获取href属性值

我是 Clojure 的新手并且很活跃。

我有这样的html

我试过这个

(html/select (fetch-url base-url ) [:span.f10 [:a (html/attr?:href)]]))

但它返回这个

我想要的只是输出中的 value1 和 value 2。我怎样才能完成它?

0 投票
2 回答
575 浏览

clojure - 如何编写以下 clojure enlive 选择器?

我正在尝试使用 clojure 的 enlive 库来抓取网站。对应的 CSS 选择器是:

我已经使用 jquery 测试了上面的选择器,它可以工作。但我不知道如何将上面的内容翻译成 enlive 的选择器语法。我试图写一些类似的东西:

但我得到一个空洞的回应。你能告诉我如何用 enlive 的语法翻译上面的 CSS 选择器吗?

非常感谢。

编辑:包括完整的代码。

0 投票
1 回答
134 浏览

clojure - 如何在enlive中解析来自httpclient的结果

在以下链接中 https://github.com/swannodette/enlive-tutorial/blob/master/src/tutorial/scrape1.clj

它显示了如何从 URL 解析页面,但我需要使用 sock5 代理,我不知道如何在 enlive 中使用代理,但我知道如何在 httpclient 中使用代理,但是如何解析结果来自httpclient,我有以下代码,但最后一行显示空结果

0 投票
1 回答
65 浏览

clojure - 如何在enlive中进行身份转换?

我需要根据某些条件替换元素的内容。如果不满足条件,则元素应保持不变。

我试图nil用作身份转换,但它只是删除了元素。

0 投票
1 回答
98 浏览

clojure - Enlive 如何评估其规则/转换?

我喜欢Enlive,但是当我观察到以下内容时让我有些困惑。

考虑以下 Clojure 代码(也可在 github 上找到):

这个 HTML 模板(resources/index.html)在这里:

在调用page模板时,我希望它完全忽略其规则的右侧(转换),因为没有与规则的 selector 匹配的 HTML 标记:.foobar

然而,事实证明,规则的右侧确实得到了评​​估:

(显然,它甚至会被评估两次 - 看起来模板中的每个根 HTML 元素一次)。

但是,尽管没有与选择器匹配的元素,为什么还要对其进行评估呢?这是正确的行为吗?我在这里遗漏了一些明显的东西吗?

这个例子使用 Enlive 1.1.6,正如它的 README 所建议的那样。

澄清非常感谢。

编辑#1:

事实证明(感谢@leetwinski),我对事情如何运作的假设是不正确的:

我假设deftemplate宏只会在规则的选择器与给定 HTML 中的元素匹配时评估规则的右侧(转换部分)。

但正确的是:

在调用定义的模板函数(例如 )期间,规则的右侧总是page会被评估,并且预计会评估一个函数,该函数将反过来评估所需的内容(例如“===FOOBAR===”在这个例子中)当被调用时。只有匹配选择器的元素才会调用此函数。

这意味着 eghtml/content评估这样的功能(而不是直接评估所需的内容)。

为了使事情按我最初的预期工作,我可以这样写:

这将导致以下输出:

或者在向<div class="foobar"></div>HTML 模板添加 a 时:

编辑#2:

已经有几个星期了,但我仍在为如何在 Enlive 中实现这一点而苦苦挣扎。#((html/content ...) %)我看到自己一遍又一遍地包装规则的转换部分。

有没有人解释为什么 Enlive 会评估转换(全部甚至多次),即使它们甚至与当前的渲染过程无关?

我可能忽略了一些东西,因为我真的很惊讶这似乎并没有打扰到除了我之外的任何人。