如何通过用户脚本抓取 HTML 表格内容?

2024-01-10

我正在创建一个 Greasemonkey 脚本,该脚本读取基于文本的游戏中的信息并将其存储到数据库中以供将来使用。

我想要的是能够读取用户的统计信息并将这些统计信息转换为变量,以便我可以继续使信息变得有用。

这是我想从中获取统计信息的表的源代码:

<table width="100%">
  <tr>
    <td width="50%" valign="top" style="padding-right: 25px;">
      <table class="table_lines" width="100%" cellspacing="0" cellpadding="6" border="0">
        <tr>
          <th colspan="3">Military Effectiveness</th>
        </tr>
        <tr>
          <td><b>Strike Action</b></td>
          <td align="right">16,376,469,657</td>
          <td align="right">Ranked #443</td>
        </tr>
        <tr>
          <td><b>Defensive Action</b></td>
          <td align="right">4,016,716,436</td>
          <td align="right">Ranked #569</td>
        </tr>
        <tr>
          <td><b>Spy Rating</b></td>
          <td align="right">12,245,896</td>
          <td align="right">Ranked #1,204</td>
        </tr>
        <tr>
          <td><b>Sentry Rating</b></td>
          <td align="right">5,291,630,090</td>
          <td align="right">Ranked #831</td>
        </tr>
      </table>

现在你可以看到统计数据没有识别类 ID 或任何东西,所以我不知道如何做到这一点。我只真正使用 PHP,所以 JavaScript 对我来说很新,但看起来与 PHP 很相似。

也许会写着“之后<td><b>Strike Action</b></td>,获取第一个 td 值”然后将其作为变量?

注意:攻击行动、防御行动、间谍评级和哨兵评级是我需要的变量。


  1. Use jQuery http://api.jquery.com/使解析表更容易。
  2. 既然您想要评级,请不要忘记将数字解析为 JavaScript 整数。
  3. 如果页面是 AJAX 驱动的,请使用AJAX 感知技术 https://stackoverflow.com/questions/8281441/fire-greasemonkey-script-on-ajax-request.

Here is 完整的 Greasemonkey/Tampermonkey 脚本展示如何做到这一切:

// ==UserScript==
// @name     _Parse table information that has low information scent.
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// @include  http://bilalrammal.ca/clicker/tester.html
// @require  http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @require  https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant    GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change
    introduced in GM 1.0.   It restores the sandbox.
*/
waitForKeyElements (".table_lines", parseMilitaryEffectivenessTable);

function parseMilitaryEffectivenessTable (jNode) {
    //--- Note that :contains() is case-sensitive.
    var strikeAction    = jNode.find ("tr:contains('Strike Action') td:eq(1)").text ();
    var defensiveAction = jNode.find ("tr:contains('Defensive Action') td:eq(1)").text ();
    var spyRating       = jNode.find ("tr:contains('Spy Rating') td:eq(1)").text ();
    var sentryRating    = jNode.find ("tr:contains('Sentry Rating') td:eq(1)").text ();

    //--- Convert strings to integers...
    strikeAction        = parseInt (strikeAction   .replace (/\D/g, ""), 10);
    defensiveAction     = parseInt (defensiveAction.replace (/\D/g, ""), 10);
    spyRating           = parseInt (spyRating      .replace (/\D/g, ""), 10);
    sentryRating        = parseInt (sentryRating   .replace (/\D/g, ""), 10);

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

如何通过用户脚本抓取 HTML 表格内容? 的相关文章

  • 如何在javascript中计算日出和日落?

    我正在使用appcelerator titan开发一个IOS应用程序 我想让我的应用程序在日出和日落时向用户发送本地通知 解决这个问题的一个好工具是使用 YQL 的雅虎天气 但是 雅虎天气仅供非商业用途 我正在尝试找到一个javascrip
  • Javascript树遍历算法

    我需要帮助以深度优先的方式遍历树结构 我无法想出一个算法来正确地做到这一点 我的输入是这样的 A B C 1 2 a b c d 输出应采用以下形式 A 1 a A 1 b A 1 c A 1 d A 2 a A 2 b A 2 c A 2
  • 如何修复 Nuxt 中导航器/窗口/文档未定义的问题

    我试图确定 Nuxt 应用程序内的 UserAgent 和 Retina 信息 但应用程序抛出错误并显示导航 窗口未定义 我如何在 nuxt 应用程序中获取这些信息 const userAgent navigator userAgent t
  • 如何使用 LinkedIn javascript sdk 检索包括所有字段的职位列表?

    我想要获取 LinkedIn 会员在其个人资料中输入的每个职位的 ID 头衔 摘要 开始日期 结束日期 当前状态和公司名称 我测试了一个查询休息控制台 https apigee com console linkedin我得到了想要的结果 查
  • 使用闭包和自调用函数制作计数器

    我想知道为什么这段代码不起作用 var uniqueInteger function var counter 0 return function return counter console log uniqueInteger 0 cons
  • Google 饼图未显示所有数据行

    我正在尝试绘制人口与国家名称的关系图 我发现 Google 可视化库仅渲染前几个 实际上数字似乎是随机的 具体取决于我使用的数据 有时添加 其他 条目 但它没有t 实际上具有其余条目的值 Example 1 With all countri
  • 来自 DataURL 的 Blob?

    Using FileReader s readAsDataURL 我可以将任意数据转换为数据 URL 有没有办法将数据 URL 转换回Blob使用内置浏览器 API 的实例 用户 Matt 一年前提出了以下代码 如何在javascript中
  • 未捕获的类型错误:this.props.signinUser 不是一个函数(…)

    src actions index js import axios from axios const ROOT URL http localhost 3090 export function signinUser email passwor
  • Three.js - 在代码中包含网格数据

    我有这个 Three js 代码 其中 JSON 加载器从文件 models mountain json 加载网格 var Three new function this scene new THREE Scene this camera
  • ngModel.$parsers 忽略 ng-model 值末尾的空格

    我有这样的指令 directive noWhitespace parse function parse return restrict A require ngModel link function scope element attrs
  • 在 Angular2 项目中集成 Treant-js

    我正在尝试在 Angular2 项目中使用 treant js 但我正在努力解决如何正确集成它的问题 我有一个工作正常的 JavaScript HTML 示例 我正在尝试在 Angular2 中工作 我创建了一个组件 从 npm 添加了 t
  • Telegram 授权无默认按钮

    使用 Telegram 第 3 方授权的唯一有记录的方法是使用其提供的脚本https core telegram org widgets login https core telegram org widgets login 这个脚本 正如
  • 专用网络:web3.eth.getAccounts() 始终发送空数组

    我正在运行一个私人以太坊网络 我确实用https aws amazon com blockchain templates 整个设置已经完成 AWS 上的设置看起来正确 现在 我正在尝试创建帐户并检索所有这些帐户 为此 我使用以下方法 Web
  • ReactJS:从没有 onChange 事件的 props 中选择默认值?

    所以 我只是想知道我是否绝对需要在 React 中的选择组件上有一个 onChange 事件处理程序 我有一个道具传递我想要选择的选项的默认值 如果我有的话 它就没有问题
  • 在 vue.js 模板中包含外部脚本

    我是 Vue js 和 web pack 的新手 所以我决定使用 vue cli webpack 来构建初始应用程序 我试图包含一个外部脚本 例如组件 不需要的模板中 但是 Vue 警告这是不允许的 我的 index html 文件与最初生
  • 将 NPM 包客户端与 nuxt 结合使用

    我对 nuxt 和 javascript 非常陌生 我正在尝试弄清楚如何在客户端使用我的应用程序的依赖项 我将它们列在我的 nuxt config js 中并使用 npm 安装 我也有一个文件 plugins导入它们的目录 不确定这是否好
  • 元素中优先考虑 ngclick 而非 nghref

    tl dr 如何强制 Angular 只执行 ngclick 指令 a 元素而不清空 删除href 我的网站在某些元素上有一些自定义行为 模式打开 位置栏更新等 但对于 SEO 索引我also需要它成为一个 a 元素与href包含有效链接的
  • 理论上防止 WebSocket 中第一个收到的消息丢失

    服务器端代码发送消息立即地连接打开后 它向客户端发送初始配置 问候语 以下代码是在客户端 var sock new WebSocket url sock addEventListener error processError sock ad
  • 错误:创建 React Native 项目版本 0.59.9 时找不到 template.config.js

    当我尝试创建 React Native 项目版本 0 59 9 时 出现以下错误 错误错误 无法在 react native 模板中找到 var folders zc h93bvpb573q24 5ynvgkn1wc0000gn T rnc
  • 使用 Lodash 将对象键转换为具有键值数量的数组[重复]

    这个问题在这里已经有答案了 我有一个产品对象 products bread 1 milk 2 cheese 2 chicken 1 我想要一个包含产品名称的数组 如下所示 products bread milk milk cheese ch

随机推荐

  • 安装 Capybara 后控制器测试损坏?

    我有一堆用 rspec 编写的组合控制器 视图测试 我添加了 Capybara gem 并编写了一些通过良好的集成测试 唯一的问题是 现在在我所有的控制器测试中 我有 response should have selector 某个选择器
  • Spring初始化方法参数

    我是 spring 新手 我想问是否可以将参数传递给 bean 的 init 和 destroy 方法 Thanks 不 你不能 如果您需要参数 则必须事先将它们作为字段注入 样品豆 public class Foo Autowired p
  • 在 ply 的正则表达式中匹配 unicode

    我正在匹配标识符 但现在遇到一个问题 我的标识符允许包含 unicode 字符 因此 旧的做事方式是不够的 t IDENTIFIER r A Za z A Za z 0 9 In 我的标记语言 http freehg org u cheer
  • 在页面之间导航和传递数据 Ionic 2

    我在使用 Ionic2 的页面之间导航时遇到一些问题 我有一个从 data json 获得的数据列表 这是清单 我想了解详情 示例 来自 A 我的 data Example Json 上的数据 title A lat 2 323733 lo
  • 使用 Eclipse 编译为特定的 JRE

    关于将 Eclipse 中的项目编译为特定的 JRE 我有两个问题 1 项目的属性窗口 gt Java 构建路径 gt 库选项卡 如果我想编译到 JRE 6 窗口是否应该显示构建路径中包含的 JRE 6 和 JRE 7 或者只有 JRE 6
  • Django 似乎正在缓存 datetime.now()

    我有一个看起来像这样的模型 class Item models Model publish date models DateTimeField default datetime datetime now 还有一个看起来像这样的经理 from
  • Xcode 版本 6.1 (6A1030) - Apple Mach O-Linker 错误 - 构建

    我将 Xcode 升级到最新版本 版本 6 1 6A1030 我使用 Swift 语言 当我构建应用程序时 我遇到了 25 个问题 Apple Mach O Linker error Undefined symbols for archit
  • Heroku Rails 控制台不再启动

    我在 heroku cedar stack 上运行 Rails 控制台时遇到问题 以下每个命令 heroku run console heroku run Rails console heroku run bundle execrails
  • 在Java中如何将整数转换为浮点数?

    我有两个整数x and y 我需要计算x y结果我想获得浮动 例如作为以下结果3 2我想要1 5的 我认为最简单 或唯一 的方法是转换x and y转换为浮点数类型 不幸的是 我找不到一种简单的方法来做到这一点 你能帮我吗 你只需要cast
  • Windows 服务使用 Topshelf 启动然后停止

    我正在使用 Quartz net 并且试图让 Quartz 服务器在 Windows 服务中启动 我创建了一个 Windows 服务项目并包含 Quartz net 库 在我的服务类中 我有 protected override void
  • HEIC 文件签名

    我正在寻找扩展名的文件签名的完整列表 特别是 我在查找扩展名 HEIC 和 HEIF 的文件签名时遇到了一些麻烦 你知道在哪里可以得到它吗 您可以在任何操作系统中使用十六进制文件查看器 有关文件签名的完整列表 请检查https www fi
  • 从 xyz 磁力计获取磁北 (iPhone 3.0)

    我实际上是在转发 iphone 开发板的一个问题 我没有问它 但我在试图寻找它的答案时发现了它 那里还没有人回复 所以我想我应该尝试将其发布在这里 预先感谢您的任何帮助 有谁知道有关根据 CLHeading 的原始 xyz 值计算磁航向的算
  • Kubernetes 无法从 docker hub 存储库中提取镜像

    大家好希望你们一切顺利 我需要我的主机命令从机从我的 docker hub 存储库中拉取映像 我收到以下错误 它不会让从机从存储库中拉取 但是当我转到从机时 手动拉动他拉动 来自 kubernetes master 的 第一行是来自 pod
  • HTML/JS 打开一个到 C$ 驱动器的窗口

    我需要在我的应用程序中有一个链接 用于打开特定计算机的远程 C 驱动器窗口 例如 这有效 a href Connect to C a 但是 我需要用一段 JS 代码来完成它 所以我想做这样的事情 function raiseQueryDia
  • Android ImageReader 获取 NV21 格式?

    我没有成像或图形方面的背景 所以请耐心等待 我在用JavaCV https github com bytedeco javacv在我的一个项目中 在里面examples https github com bytedeco javacv bl
  • 使用未显式实例化的 VBA 用户表单

    假设我有一个名为MyUserForm我用的像 Dim form as MyUserForm Set form New MyUserForm form SomeVar Hi form Show Displays Hi somewhere on
  • gdb 漂亮打印不起作用

    我正在尝试查看 C STL 容器的内容 我读here https stackoverflow com a 10994050 2627729最新版本的 gcc 和 gdb 默认支持漂亮的打印 但是当我尝试显示地图时 我得到以下信息 然后 我尝
  • 如何调试 cordova 混合应用程序

    因此 我在远程设备上运行了 cordova 应用程序 并且我正在尝试测试扫描仪 因此必须在 Android 设备本身上进行测试 但我不知道应该如何检查它抛出的错误 因为扫描仪在我的移动设备上无法工作 任何帮助将不胜感激 Thanks 调试
  • 如何在使用 React Native 时实现 SSL 证书固定

    我需要在我的 React Native 应用程序中实现 SSL 证书固定 我对 SSL TLS 知之甚少 更不用说固定了 我也不是本地移动开发人员 尽管我了解 Java 并在这个项目上学习了 Objective C 足以应付 我开始寻找如何
  • 如何通过用户脚本抓取 HTML 表格内容?

    我正在创建一个 Greasemonkey 脚本 该脚本读取基于文本的游戏中的信息并将其存储到数据库中以供将来使用 我想要的是能够读取用户的统计信息并将这些统计信息转换为变量 以便我可以继续使信息变得有用 这是我想从中获取统计信息的表的源代码