- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有人能解释一下如何从 <td>
中抓取内容吗? <th>
所在的标签具有内容值(实际上在这种情况下我需要 <b>
标签的内容来进行匹配操作)“Row1 title”,但没有抓取 <th>
标记(或其任何内容)正在处理中?这是我的测试 HTML:
<table class="table_class">
<tbody>
<tr>
<th>
<b>
Row1 title
</b>
</th>
<td>2.660.784</td>
<td>2.944.552</td>
<td>Correct, has 3 td elements</td>
</tr>
<tr>
<th>
Row2 title
</th>
<td>2.660.784</td>
<td>2.944.552</td>
<td>Correct, has 3 td elements</td>
</tr>
</tbody>
</table>
我要提取的数据应该来自这些标签:
<td>2.660.784</td>
<td>2.944.552</td>
<td>Correct, has 3 td elements</td>
我已经设法创建返回表的全部内容的函数,但我想排除 <th>
结果中的节点,并仅返回来自 <td>
的数据节点,我可以使用哪些内容进行进一步的解析。谁能帮我解决这个问题?
最佳答案
像这样激活
(ns tutorial.so-scrape
(:require [net.cgrand.enlive-html :as html])
(defn parse-tds [url]
(html/select (html/html-resource (java.net.URL. url)) [:table :td]))
应该给你所有 td
节点的序列,某种形式的 {:tag :td :attrs {...} :content (...)}
。我不知道 enlive 让您可以直接获取这些节点的内容。我可能是错的。
然后您可以提取序列的内容以获取类似
的内容(for [line ws-content] (apply str (:content line)))
关于 question you posted yesterday (我假设您仍在使用该页面)——我提供的解决方案有点复杂——但它也很灵活。例如,如果您像这样更改 tag-type
函数
(defn tag-type [node]
(case (:tag node)
:td ::TerminalNode
::IgnoreNode)
(将所有节点的返回值更改为 ::IgnoreNode
除了 :td
然后它只为您提供 :td 内容的序列
这可能接近您想要的。如果您需要更多帮助,请告诉我。
编辑(回复下面的评论)我不认为单独使用 enlive 可以根据节点的 :content
选择节点 - 但您当然可以使用 Clojure 这样做。
例如你可以做类似的事情
(for [line ws-content :when (re-find (re-pattern "WHAT YOU WANT TO MATCH") (:content line))]
(:content line))
可以工作。 (您可能需要稍微调整 (:content line)
形式..
关于clojure - 如何使用 Enlive 从指定标签中抓取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7815260/
我有一些看起来像这样的html: text 我如何获得 a通过使用显示“查找任何包含文本内容的链接”的选择器?我了解了 text-pred ,但这只是返回文本,而不是带有文本的标签。 最佳答案
我试图创建从 HTML 页面中抓取和标记的函数,我将其 URL 提供给函数,并且它应该可以正常工作。我得到 的序列和 元素,当我尝试使用 select 函数从结果序列中仅提取 table 或 h3
我正在使用 enlive 进行网络开发。我使用 (serve my-app/handler) 在 repl 中启动环服务器 但是,当我对任何 html 模板进行更改时,我必须重新启动我的 repl 才
我有这个 test.html 文件,其中包含: content 想要定义一个仅更改 html attr 值的一部分的模板: (deftemplate test "public/templates/te
我正在学习使用出色的 enlive 库来进行一些网络抓取。我需要捕获一些可能部分突出显示的文本。例如,html 可能如下所示: Foo Bar Baz Blahrest of text 使用(选择页面
有人能解释一下如何从 中抓取内容吗? 所在的标签具有内容值(实际上在这种情况下我需要 标签的内容来进行匹配操作)“Row1 title”,但没有抓取 标记(或其任何内容)正在处理中?这是我的测试
是否可以使用 enlive 将值附加到属性? 例子:我有这个 edit 并且想要这个 edit 我目前正在这样做: (html/defsnippet foo "views/foo.html" [:#m
我正在尝试找到一种“Enlivonic”方式来定义一个函数,该函数将对参数化的 html 模板执行转换。 换句话说,如何定义像 defsnippet 这样也将模板作为参数的东西? 我查看了代码片段和转
我需要从 HTML 页面的特定部分检索一些原始 HTML。 我编写了抓取器,它抓取了适当的 div,但它返回了标签映射。 (:use [net.cgrand.enlive-html :as html]
我使用 enlive 模板引擎创建了一个表。我所做的是创建一个单表行并重复该行直到动态需要的行数。但是,我在更新每一行的属性 class 时遇到了一些问题。 我如何动态地为每个表行设置 class 属
为什么以下代码段不起作用? (html/select (:body (client/post "http://www.web.onpe.gob.pe/modElecciones/elecciones/
是否可以在 enlive 中从源文件夹外部提供模板? 我想从我的 resources/public/templates 文件夹而不是 src/templates 文件夹中获取模板,我该怎么做? 谢谢,
我的应用程序的某些页面将包含自己的 js/css,所以我想知道如何使用 Enlive 将这些资源添加到 html 文档的头部部分。我发现“附加”转换器,但没有自动转义的“html-附加”。或者有什么正
是否可以在 enlive 中从源文件夹外部提供模板? 我想从我的 resources/public/templates 文件夹而不是 src/templates 文件夹中获取模板,我该怎么做? 谢谢,
我正在使用 autoreload-server 示例,它非常适合在使用 ns-tracker 更改 .clj 文件时重新加载命名空间。 https://github.com/pedestal/samp
我正在尝试使用 enlive 的 html-resource 函数抓取网页内容,但我收到响应 403,因为我不是来自浏览器。我猜这可以在 Java 中被覆盖(找到答案 here ) ,但我希望看到一个
有没有人知道与 Enlive 性质相似的 java 模板库? ? 对页面使用纯 html,内部没有任何标记,并使用等效的 CSS 选择器用动态数据填充页面的概念对我来说似乎很不错。 有关我正在寻找哪种
我有多个html文件,要合并成一个html文件。那些多个文件就像页眉、页脚等,是多个文件共有的。我正在使用 enlive 的 html-resource 方法。但是,该方法将缺少的 html 标签插入
我有一个 HTML 片段类似于:
参见 this google groups topic 一些人对使用 clone-for 将动态生成的元素列表插入到包含多个虚拟元素的模板表示困惑。例如,模板可能是这样的, foo
我是一名优秀的程序员,十分优秀!