如何使用 XPath/HTMLAgilityPack 读取 JavaScript 对象

2023-12-13

对于我的爬虫项目,我需要从 JavaScript 对象获取产品详细信息。

如何从以下 JavaScript 中有效获取对象详细信息?我使用 XPath 和 HTMLAgilityPack。

<script type="text/javascript">
    var product = {
        identifier: '2051189775',     //PRODUCT ID
        fn: 'Fit- Whiskered Dark Wash Skirt',
        category: ['sale'],
        brand: 'Brand Name',
        price: '22.90',  // this would be the discount price
        amount: '31.80',  // this would be the original price
        currency: 'USD',
        //List can me even more.
    };
</script>

我之前没有尝试过从 JavaScript 对象获取详细信息。我直接从其他爬虫的 HTML 中获取详细信息。


由于 HTML Agility Pack 不评估 HTML 的任何内容,因此 javascript 代码应仅被视为纯文本。使用SelectSingleNode方法找到 Javascript 片段,然后只需获取 InnerHtml 即可获取内容。

要么找到一个 C# javascript 解析器 (Iron JS例如)或使用标准文本操作技术编写解析器(String.* or Regex提取你想要的部分。

一旦你有了大括号之间的位,你就可以使用前面提到的解析器或类似的库来解析它们Json.NET,因为大括号之间的部分似乎是有效的 json。

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

如何使用 XPath/HTMLAgilityPack 读取 JavaScript 对象 的相关文章

随机推荐

  • 在 R 中按列中的行值和行中的列值对 data.frame 进行排序

    我有六只玄凤鹦鹉鸟 Beefy Scoundrel Baston Mattdamon Jesus and Hulkhogan 这些鸟拉屎很多 而且在很多不同的地方 我决定追踪过去两周内这种情况发生的地点和频率 并且我试图找出这些小恶魔今天在
  • 添加内联注释后 Bash 命令停止工作

    在子 shell 中生成的新值的分配在没有尾随注释的情况下也可以工作 newname echo newname sed s TD oldnewTD TD r ftd1 但变量newname如果添加尾随注释 则保持不变 newname ech
  • 暂停所有其他视频,无论页面上有多少视频

    因此 我在一个多页面项目上使用 video js 该项目的页面每个页面上的视频数量不同 我想播放一个视频来暂停页面上播放的任何其他视频 我已经让它工作了 但我的代码只有在专门针对该页面制作时才有效 而不是单独处理每个页面 HTML 示例
  • 从抽象基类实现纯虚函数:重写说明符有什么意义吗?

    背景 我刚刚偶然发现了一个用例override说明符据我所知 这似乎是多余的 而且也没有任何特定的语义含义 但也许我遗漏了一些东西 因此这个问题 在继续之前 我应该指出 我试图在这里找到答案 但我得到的最接近的是以下线程 并没有真正回答我的
  • Selection.OnAction = "工作簿名称!Macroname"

    假设您有两个工作簿 一个名为 MyWorkbook 另一个名为 PatchMyWorkbook 两个工作簿在保存时都打开 PatchMyWorkbook 有一个宏 用于添加按钮并将 MyWorkbook 的现有宏分配给 MyWorkbook
  • Spring 中的 Elasticsearch HTTP 身份验证

    我想访问受用户名和密码保护的远程elasticsearch https 用户名 密码 aws eu west 1 portal1 dblayer com 11109 在 Spring 中 使用 XML 配置我能够访问我的本地主机弹性 如下所
  • 使用 Jackson 和 Spring-Boot 将 Base64 编码的 JSON 解码为 POJO

    我有一个这样的请求 varA A varB TCFNhbiBKb3NlMRgwFgYDVQQK 关键在哪里varB是一个 base64 编码的 JSON 字符串 像这样的东西 nestedVarB1 some value here nest
  • SymPy 仅打印函数名称

    我正在尝试在 SymPy 中进行一些符号计算 但我无法使用乳胶打印并获得我想要的图形输出 这一直困扰着我 并且花了几个小时 也许是几天 试图找到一种自定义对象打印方式的方法 在 LaTeX 中 在 pprint 表示中 它有很好的文档记录
  • redis dbsize命令的准确性

    准确度如何dbsizeredis 中的命令 我注意到返回的键数dbsize与返回的实际键数不匹配keys命令 这是一个例子 redis cli dbsize integer 3057 redis cli keys wc l 2072 Why
  • 无法调用匿名类方法

    我正在尝试调用一个方法 setPostal String post 我是从一个匿名类创建的 但由于某种原因 编译器在缅因州甚至无法识别它 这是有什么原因吗 我的代码的一部分 地址是Student的内部类 Student public cla
  • 当我们改变父对象的原型时 __proto__ 指向哪里?

    通常 当我们使用 new 关键字创建一个新对象时 实际上 原型 创建对象的属性指向原型父类的属性 我们可以如下测试 function myfunc myfunc prototype name myfunction var child new
  • 解决 JSONException 重复键

    我正在使用谷歌自定义搜索引擎并以 JSON 格式获取结果 对于某些查询 JSON 结果具有重复的键 因此它会产生 JSONException Duplicate key nickname 等 我正在使用JAVA String str con
  • ReadyStatement 忽略查询中的参数:java.sql.SQLException: 参数索引超出范围(1 > 参数数量,即 0)[重复]

    这个问题在这里已经有答案了 我使用java和jdbc驱动程序 java sql 我得到了这段代码 String clinetIP 220 181 108 89 String sql SELECT FROM as WHERE as ip ra
  • http2 模块 nginx 不工作

    我在 nginx 中启用 http2 协议时遇到一些问题 网站上写的是 Laravel 5 但我认为这并不重要 首先 我升级nginx版本 Debian nginx V nginx version nginx 1 10 1 built wi
  • int(x) 的作用是什么?

    我见过这些 看起来像是 C 代码中的函数 但我不知道它们做什么或是什么 它们似乎做与类型转换类似的事情 但它们看起来不像类型转换 那么它们是什么 它们看起来像这样 int x where x是一些数字输入 我一直在网上查找 但我无法找到有关
  • 如何加载 BeautifulSoup 页面解析器?

    帮助 请下载指定页面并找到她的元素 id login 一定需要用于查询模块请求 import pprint import requests import bs4 url http forum saransk ru html requests
  • Apache 反向代理不适用于 Node 和 SSL

    我正在尝试在 Web 服务器上的 HTTPS 上设置我的应用程序 我有一个使用 AutoSSL 安装在 InMotion 主机上的有效证书 我的 Node 应用程序在我的 Centos 服务器上的端口 3000 上运行 我的 apache
  • 标记(块)引用的作者的正确方法是什么?

    我正在尝试找出为引用添加归因的正确方法 互联网似乎对正确的方式存在分歧 Html5医生说如下 blockquote p A quote p blockquote
  • 根据所有其他列中是否存在 0/1 创建指示符列

    我经常发现自己必须应用以下条件 我有一个表 其中有多个评级为是 否或 0 1 的二进制列 我必须使用以下规则在计算中创建一个新的中间列 如果所有列均为 否 则新列为 否 如果至少一列具有 是 则摘要列必须表示 是的 我通常使用 case w
  • 如何使用 XPath/HTMLAgilityPack 读取 JavaScript 对象

    对于我的爬虫项目 我需要从 JavaScript 对象获取产品详细信息 如何从以下 JavaScript 中有效获取对象详细信息 我使用 XPath 和 HTMLAgilityPack