问题标签 [csquery]

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 投票
2 回答
1017 浏览

asp.net - ASP.NET - 在传输之前解析/查询 HTML 并插入 CSS 类引用

作为一名 Web 开发人员,我觉得我的太多时间都花在了 CSS 上。我正在尝试提出一个解决方案,我可以编写可重用的 CSS即类并在 HTML 中引用这些类,而无需在 ASPX 或 ASCX 文件等或代码隐藏文件中添加额外代码。我想要一个将 HTML 元素与 CSS 类链接起来的中介。

我想要达到的目标:

  • 在传输前立即修改 HTML
  • 选择 HTML 中的元素
  • 基于其他地方定义的规则(例如在与当前正在处理的页面相关的文本文件中):
  • 向多个 HTML 元素添加 CSS 类引用
  • 多个 CSS 类引用添加到单个 HTML 元素

我如何设想这个工作:

  1. 扩展生成最终 HTML 的 ASP.NET 函数
  2. 将所有 HTML 作为字符串抓取
  3. 将字符串传递给具有查询(例如 XPATH)方法的对象的构造函数
  4. 浏览全局规则列表,例如ul先的孩子,div然后class = "navigation"
  5. 浏览页面特定规则的列表,例如对于ul第一个div然后的孩子class &= " home"
  6. 从对象获取已处理的 HTML,例如 obj.ToString
  7. ASP.NET 使用已处理的 HTML 恢复页面生成

所以我需要知道的是:

  1. 在哪里/如何扩展 ASP.NET 页面生成功能(获取页面的所有 HTML)
  2. 哪些类有元素/节点查询方法和属性访问

提前感谢您的帮助。

PS 我正在开发 ASP.NET Web 表单网站,其中包含在 ISS 7 上运行的 VB.net 代码隐藏

0 投票
2 回答
999 浏览

html - ASP.NET - 使用 HAP(HTML 敏捷包)在渲染期间添加类引用

是否可以使用 HAP(HTML 敏捷包)来:

  1. 获取节点集合,例如<a>作为元素子级的所有<li>元素
  2. 遍历集合
  3. 将 CSS 类引用添加到每个元素的类属性中,例如class &= "foo"
  4. 更新 HTML 中原始位置的节点

对于第 4 点,我需要知道是否:

  • 当我抓取一组节点时,我是否在使用副本?
  • 如果是这样,我可以轻松地更新 HTML 中原始位置的节点吗

最后,在 ASP.NET 网站中呈现页面时这样做是否可行,考虑到:

  • 我将需要修改不超过 100 个元素的类引用
  • 我没有处理大型 HTML 文档
  • 我计划从一个 div 开始选择我的节点,例如div[2]body 包含 4divs

我意识到这可能看起来像是一堆单独的问题,但实际上它只是以下两个问题的细分:

  • 我可以轻松地修改 ASP.NET 页面的 HTML 输出,例如插入类引用吗?
  • 在 50 - 100 个元素的 WRT 速度上执行此操作是否可行,例如不超过 2 秒的成本?

非常感谢。

0 投票
1 回答
557 浏览

c# - 在 Each 块内进行更改持久化

我一直在尝试奇妙的CsQuery库,它基本上是 jQuery 的 .NET 端口,允许使用 os CSS 选择器和 jQuery 的大部分功能。

我正在使用它来解析和编辑一批 HTML 文件(特别是编辑不同 DOM 元素的一些属性)。

下面的 C# 片段显示了我正在做的事情,注释中包含 JavaScript/jQuery 等效代码。

非常有效:如果我检查输出文件,所有图像的src值现在都是#.

无论如何,如果我使用该Each块(这似乎可以很好地使用C# lambda 表达式来模拟 javascript 的函数传递),则更改将不适用于输出文件:

尽管 Messabox 为我的 DOM 中的每个图像都显示了“#”(这意味着cqElement得到了更改),但输出文件没有得到更改。

我认为导致问题的关键在于CQ cqElement = CQ.Create(element);它创建了一个全新的 CsQuery 对象。事实上,如果在第一个 Messagebox 之后我弹出另一个像下面这样的,它不会cqElement

关于如何解决这个问题的任何想法?

0 投票
2 回答
1281 浏览

c# - 延迟一段时间后检索网页数据(网页抓取)

目标是在完成 Ajax 调用后从网站检索数据。当前,页面首次加载时正在检索数据。但是所需的数据是在 ajax 调用后加载的 div 中找到的。

总结一下,场景如下:

使用 C# 代码中传递的一些参数调用网页(当前使用 CsQuery for c#)。发送请求时,页面打开并显示“正在加载”图片,几秒钟后检索到所需的数据。然而,cSQuery 代码使用“正在加载”图片检索第一个页面内容..

代码如下

0 投票
1 回答
1023 浏览

html - 使用 html 子字符串加速 CsQuery 选择器

我想解析一些复杂/繁重的 HTML 页面。我最近阅读了 CsQuery 并检查了CsQuery Vs Html Agility Pack 和 Fizzler的性能比较。根据这些测试,由于创建了索引,CsQuery 在创建 DOM 时变得更慢。

假设我想选择一个沉重的 html 页面的某个元素(没有 id),并且我知道它的祖先的 ID,我将使用它作为上下文元素。如果我将这个沉重的 html 加载到 DOM 中,它会很慢,因此我的选择会很慢。但是,如果我能以某种方式快速预处理 html 并获取包含上下文元素(我知道的 ID)的子字符串并将其加载到 DOM 中,它会更快。在那种情况下,我会摆脱许多不需要的 HTML,不会为其创建索引器。因此,我的选择会更快。

我使用 CsQuery 是因为我想要类似 JQuery 的东西。

我的问题是:

给定一个 HTML 文档字符串:是否有一种快速方法(例如:线性)来获取给定其 id 的 HTML 元素的 HTML 子字符串?

0 投票
1 回答
733 浏览

c# - CsQuery 还是 Jint?C# 中的 Javascript 数据操作

我正在编写一个用于统计目的的网络爬虫。该网站通过javascript动态更新。我设法解析 HTML 文件并将所有脚本值复制到一个数组中。我如何在本地或即时重新执行这些脚本以获得返回值?CsQuery、Jint 还是其他方法?

0 投票
1 回答
6103 浏览

c# - CsQuery to parse a collection of li items

Here's my code:

Inside the foreach loop li turns into a IDomObject variable and I can no longer drill down further into it.

Any suggestions? Here is the example HTML I'm trying to parse:

I need to grab the text of each h2 element.

0 投票
1 回答
98 浏览

jquery - 在 jQuery 中发出 parent()

想象一些 HTML 代码:

我认为它必须在 div.first 中返回一个,对吗?

因为当我在 CsQuery 中执行此逻辑时,它会在 div.first 和 div.second 中返回 a。

0 投票
1 回答
1481 浏览

c# - 如何使用 CsQuery 从 HTML 中获取 javascript 变量值

如何使用 CsQuery 从 DOM 获取 javascript 变量值?

0 投票
1 回答
165 浏览

asp.net - Using CsQuery in MasterPage code-behind to modify HTML output?

What's the "skeleton" code for using CsQuery in the code-behind of a MasterPage in order to modify the HTML output? I need to be able to modify everything in the <body> of the HTML?

I'm hoping to use CsQuery to "touch-up" the HTML output of a Dynamic Data website without rewriting / messing with the default code.

Just looking for sample code specific to MasterPage code-behind? Thanks.