c# - 读取 HTML?

2023-12-25

我正在用 C# 开发一个程序,我需要一些帮助。我正在尝试创建在某个网站上显示的数组或项目列表。我想做的是阅读锚文本,它是href。例如,这是 HTML:

<div class="menu-1">
    <div class="items">
        <div class="minor">
            <ul>
                <li class="menu-item">
                    <a class="menu-link" title="Item-1" id="menu-item-1"
                    href="/?item=1">Item 1</a>
                </li>
                <li class="menu-item">
                    <a class="menu-link" title="Item-1" id="menu-item-2"
                    href="/?item=2">Item 2</a>
                </li>
                <li class="menu-item">
                    <a class="menu-link" title="Item-1" id="menu-item-3"
                    href="/?item=3">Item 3</a>
                </li>
                <li class="menu-item">
                    <a class="menu-link" title="Item-1" id="menu-item-4"
                    href="/?item=4">Item 4</a>
                </li>
                <li class="menu-item">
                    <a class="menu-link" title="Item-1" id="menu-item-5"
                    href="/?item=5">Item 5</a>
                </li>
            </ul>
        </div>
    </div>
</div>

因此,我想从该 HTML 中读取以下内容:

string[,] array = {{"Item 1", "/?item=1"}, {"Item 2", "/?item=2"},
    {"Item 3", "/?item=3"}, {"Item 4", "/?item=4"}, {"Item 5", "/?item=5"}};

HTML 是我写的一个例子,实际的网站看起来不是这样的。


正如其他人所说, HtmlAgilityPack 是 html 解析的最佳选择,也请务必从 HtmlAgilityPack 站点下载 HAP Explorer,用它来测试您的选择,无论如何,此 SelectNode 命令将获取所有具有 ID 的锚点,并且以 menu-item 开头:

  HtmlDocument doc = new HtmlDocument();
  doc.Load(htmlFile);
  var myNodes = doc.DocumentNode.SelectNodes("//a[starts-with(@id,'menu-item-')]");
  foreach (HtmlNode node in myNodes)
  {
    Console.WriteLine(node.Id);

  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c# - 读取 HTML? 的相关文章

  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 为什么 Google 测试会出现段错误?

    我是 Google Test 的新手 正在尝试提供的示例 我的问题是 当我引入失败并设置GTEST BREAK ON FAILURE 1 或使用命令行选项 GTest 将出现段错误 我正在考虑这个例子 https code google c
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 回发后刷新时提示确认表单重新提交。我做错了什么?

    我有一个以空白 默认状态启动的仪表板 我让用户能够将保存的状态加载到仪表板中 当他们单击 应用 按钮时 我运行以下代码 function CloseAndSave var radUpload find radUpload1ID var in
  • 提交表单并重定向页面

    我在 SO 上看到了很多与此相关的其他问题 但没有一个对我有用 我正在尝试提交POST表单 然后将用户重定向到另一个页面 但我无法同时实现这两种情况 我可以获取重定向或帖子 但不能同时获取两者 这是我现在所拥有的
  • 由 IHttpClientFactory 注入时模拟 HttpClient 处理程序

    我创建了一个自定义库 它会自动为依赖于特定服务的 Polly 策略设置HttpClient 这是使用以下方法完成的IServiceCollection扩展方法和类型化客户端方法 一个简化的例子 public static IHttpClie
  • 在 Visual Studio 2010 中从 Fortran 调用 C++ 函数

    我想从 Fortran 调用 C 函数 为此 我在 Visual Studio 2010 中创建了一个 FORTRAN 项目 之后 我将一个 Cpp 项目添加到该 FORTRAN 项目中 当我要构建程序时出现以下错误 Error 1 unr
  • Python - 如何确定解析的 XML 元素的层次结构级别?

    我正在尝试使用 Python 解析 XML 文件中具有特定标记的元素并生成输出 excel 文档 该文档将包含元素并保留其层次结构 我的问题是我无法弄清楚每个元素 解析器在其上迭代 的嵌套深度 XML 示例摘录 3 个元素 它们可以任意嵌套
  • 是否有实用的理由使用“if (0 == p)”而不是“if (!p)”?

    我倾向于使用逻辑非运算符来编写 if 语句 if p some code 我周围的一些人倾向于使用显式比较 因此代码如下所示 if FOO p some code 其中 FOO 是其中之一false FALSE 0 0 0 NULL etc
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 如何部署“SQL Server Express + EF”应用程序

    这是我第一次部署使用 SQL Server Express 数据库的应用程序 我首先使用实体 框架模型来联系数据库 我使用 Install Shield 创建了一个安装向导来安装应用程序 这些是我在目标计算机中安装应用程序所执行的步骤 安装
  • C++ 条件编译

    我有以下代码片段 ifdef DO LOG define log p record p else define log p endif void record char data 现在如果我打电话log hello world 在我的代码中
  • 无法接收 UDP Windows RT

    我正在为 Windows 8 RT 编写一个 Windows Store Metro Modern RT 应用程序 需要在端口 49030 上接收 UDP 数据包 但我似乎无法接收任何数据包 我已按照使用教程进行操作DatagramSock
  • 无效字符错误:“fred”

    我确信他一定是一个新手问题 简单来说 我想定义我的第一个 Polymer dart 组件 只是我一直在同一个减速带上踢脚趾 为了使事情变得非常简单 我将其简化为一个非常简单的示例 我做了一个简单的rename示例 跑表 来自 Dart 组件
  • FireFox 中的“contenteditable = true”高度问题

    当有空的时候div with contenteditable true CSS contenteditable true border 1px dashed dedede padding 3px HTML div div 在 IE 和 Ch

随机推荐

  • 如何在 prestashop 程序化产品导入过程中添加图像?

    我找不到有关在产品插入期间添加图像的正确文档 这是我的 xml 产品导入脚本的工作代码 我不知道如何在添加产品时添加产品图像 foreach xml gt Products as product xml if product xml gt
  • Firebase RecyclerView 显示一项

    在我的数据库中 我有包含多首歌曲的条目 这就是数据库的样子 以及显示屏上显示的内容 DjSunGazer song LmHrkYkU1qD2GND9wY2 Blaya Cash LmHrlalIVUStU6nqBJI Blaya Cash
  • 无法使用 AngularJS 显式“app.controller”语法注入“$http”?

    I have 被告知 https stackoverflow com a 16660618我应该使用app controller语法 以支持缩小 重写示例 教程 示例 我发现我无法让它工作 use strict Minifiable sol
  • 使用 Paperclip gem 验证上传的附件内容

    Paperclip 具有用于验证文件的存在 大小和内容类型的验证器方法 但有没有办法验证contents保存记录之前的文件 我尝试做validate my method并从以下位置打开文件 attachment path in my met
  • StringBuilder和容量?

    我已经创建了测试应用程序来测试 StringBuilder 是否将数据复制到另一个实例并在其长度超过当前容量时增加其缓冲区并在 ildasm exe 中进行验证 但它看起来相同 如何验证 StringBuilder 将其数据复制到新实例中并
  • 在 ggplotly 中使用 alpha 和手动颜色

    我在设置手动颜色时遇到困难ggplotly library ggplot2 library plotly set seed 1 data frame x 1 10 y rnorm 10 gt ggplot aes x y fill fact
  • Haskell 递归问题,微型解析器。一些东西

    data Expr Var Char Tall Int Sum Expr Expr Mult Expr Expr Neg Expr Let Expr Expr Expr deriving Eq Show 这是数据类型Expr 我有几个问题
  • jquery datepicker 使用两个日期选择器的最大日期最小日期控制

    我所拥有的 我在jquery中有两个日期选择器日历控件 其中第一个只能选择当前日期和上一个日期 但不能选择未来日期 因为我已经编写了运行良好的代码 现在我必须使用另一个带有日期选择器的文本框 它只能选择第一个文本框中选择的日期和当前日期之间
  • 在 ASP.NET MVC 中管理 ADO.NET 实体框架 ObjectContext

    我在 MVC 应用程序中使用 ADO NET EF 我正在考虑将 ObjectContext 放入 HttpContext Current 中 以便同一请求中的所有逻辑都可以访问它 而不必每次都打开 销毁 但是 我真的确定这是否是管理 Ob
  • C 中止陷阱 6 错误

    我有这个代码 void drawInitialNim int num1 int num2 int num3 int board 2 50 make an array with 3 columns int i i j k are loop c
  • 更新 Mapview Xcode 中的位置

    在我当前的项目中 我每次都需要用户的位置50 meter用户移动 所以基本上每次打开申请后50 meter更改我需要用户位置来调用 Web 服务Objective c 我还希望当应用程序处于后台状态时运行相同的进程 提前致谢 您必须在应用程
  • 快速从函数返回多个值

    如何从 swift 中的函数返回 3 个相同类型 Int 的单独数据值 我正在尝试返回一天中的时间 我需要将小时 分钟和秒作为单独的整数返回 但所有这些都来自同一个函数 这可能吗 我想我只是不理解返回多个值的语法 这是我正在使用的代码 我在
  • MySQL OUTER JOIN 语法错误

    也许对你们来说是一个捂脸 但作为一个 SQL 查询新手 我遇到了语法问题 有谁知道出了什么问题吗 SELECT FROM company C OUTER JOIN company address A ON C company id A co
  • 如何在不安装 CPAN 模块的情况下安装它?

    这是我之前问题的后续关于开发 Perl 应用程序 https stackoverflow com questions 1679835 假设我使用 CPAN 模块开发了一个应用程序Module Install 现在我将代码上传到生产服务器 例
  • 自定义包编译选项 R

    我正在构建一个包含旧的包f77绝对应该使用以下代码构建o0优化选项 In the src Makevars在我的包中我添加了这一行 FFLAGS O0 pipe g LTO 但是当我编译我的包时 我看到 R 仍在使用 默认编译选项来自 us
  • SVG上的JS——获取元素的innerHTML

    我想从 SVG 文件中提取一些数据 我知道SVG是XML 所以我想用JS把数据导出来会很容易 所以 我想从 SVG 中提取一堆文本 所以 我启动了 chrome 的 JS 控制台 并尝试做一些事情 我需要得到所有tspan数组中的元素 提取
  • Aurelia js文件上传到服务器

    您好 我是 aurelia js 新手 我需要将文件上传到服务器 我使用 autrelia js materializecss 和 httpClient fetch 进行 api 调用 我不知道如何将文件发送到服务器 view
  • 如何签署使用 PhoneGap Build 构建的 Android APK?

    PhoneGap Build 似乎是一个很棒的工具 我用它构建了一个 apk 并在多个 Android 设备上进行了测试 现在我需要将其提交到 Google Play 商店 但我需要对 apk 进行签名 我已经在 Google 开发者网站上
  • 使用 pecl 在 OS X El Capitan (v10.11.1) 上安装 Mongodb 驱动程序

    我正在尝试为 OS X 安装 php mongo 驱动程序 我尝试过以下操作这些说明 http jafdip com how to install mongodb and the php mongo drive on mac os x sn
  • c# - 读取 HTML?

    我正在用 C 开发一个程序 我需要一些帮助 我正在尝试创建在某个网站上显示的数组或项目列表 我想做的是阅读锚文本 它是href 例如 这是 HTML div class menu 1 div class items div class mi