如何提取html注释和节点包含的所有html?

2024-04-06

我正在创建一个小型网络应用程序来帮助我管理和分析网站内容,而 cURL 是我最喜欢的新玩具。我已经弄清楚如何提取有关各种元素的信息,如何查找具有特定类的所有元素等,但我遇到了两个问题(见下文)。我希望有一些漂亮的 xpath 答案,但如果我必须诉诸正则表达式,我想那也可以。虽然我不太擅长正则表达式,所以如果你认为这是可行的方法,我会很感激的例子......

相当标准的起点:

$ch = curl_init();
    curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
    curl_setopt($ch, CURLOPT_URL,$target_url);
    curl_setopt($ch, CURLOPT_FAILONERROR, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_AUTOREFERER, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);

    $html = curl_exec($ch);
    if (!$html) {
        $info .= "<br />cURL error number:" .curl_errno($ch);
        $info .= "<br />cURL error:" . curl_error($ch);
        return $info;
    }

    $dom = new DOMDocument();
    @$dom->loadHTML($html);

    $xpath = new DOMXPath($dom);

以及信息的提取,例如:

// iframes
    $iframes = $xpath->evaluate("/html/body//iframe");
    $info .= '<h3>iframes ('.$iframes->length.'):</h3>';
    for ($i = 0; $i < $iframes->length; $i++) {
        // get iframe attributes
        $iframe = $iframes->item($i);
        $framesrc = $iframe->getAttribute("src");
        $framewidth = $iframe->getAttribute("width");
        $frameheight = $iframe->getAttribute("height");
        $framealt = $iframe->getAttribute("alt");
        $frameclass = $iframe->getAttribute("class");
        $info .= $framesrc.'&nbsp;('.$framewidth.'x'.$frameheight.'; class="'.$frameclass.'")'.'<br />';
    }

疑问/问题:

  1. 如何提取HTML注释?

    我不知道如何识别评论——它们被认为是节点,还是完全是其他东西?

  2. 如何获取div的全部内容,包括子节点?因此,如果 div 包含一个图像和几个 href,它会找到这些内容并将其作为 HTML 块全部返回给我。


注释节点应该很容易在 XPath 中找到comment()测试,类似于text() test:

$comments = $xpath->query('//comment()'); // or another path, as you prefer

它们是标准节点:这是手动输入DOMComment class http://www.php.net/manual/en/class.domcomment.php.


对于你的另一个问题,这有点棘手。最简单的方法是使用saveXML() http://www.php.net/manual/en/domdocument.savexml.php及其可选的$node争论:

$html = $dom->saveXML($el);  // $el should be the element you want to get 
                             // the HTML for
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何提取html注释和节点包含的所有html? 的相关文章

  • PHP - Filter_var 替代方案?

    我构建了一个 php 脚本来输出以表单形式发布的数据 但遇到了问题 网站将运行的服务器运行 PHP 5 1 6 此版本的 PHP 不支持 filter var 我需要知道短期内的替代方案 最好是昨天 但在 Google 或 Stack Ov
  • facebook php - 如何获取专辑封面照片

    我需要使用 PHP SDK Facebook 获取专辑封面照片 我尝试 https graph facebook com ALBUM ID picture type album 但我得到默认图像 例如 获取用户 https graph fa
  • 如何将 HTML 转换为 Markdown?

    我有一个类似 stackoverflow 的网站 有一个文本区域 人们可以在其中写答案 我用这个 PHP 库 http parsedown org 转换降价 我的意思是我使用该函数来转换 italic to i italic i inclu
  • 在字符串中间添加一个字符

    可能有一个简单的解决方案可以解决这个问题 但会引起面部表情 我将时间存储为 4 个字符长的字符串 即 1300 我试图将该字符串显示为 13 00 我觉得必须有一个比我现在正在做的更优雅的解决方案 我目前有 startTime get fi
  • 在 Laravel 5 中截断表

    描述 我有一个充满测试数据的表 有时 我想清除它以获取新数据 我可以在 DBMS 应用程序中执行截断 例如MySQL 工作台 但我试图在我的应用程序中实现它 Goal 创建一个按钮 单击时截断数据库中的表 这是我的步骤 1 声明一条路线 R
  • 如何在类似 MVC 的页面中加载基于漂亮 URL 的类?

    我想请教一些关于如何解决这个问题的提示 我正在尝试构建自己的 MVC 网站 我了解了 URL 的基础知识 http example com blog cosplay cosplayer expo today 博客 gt 控制器cosplay
  • 如何阻止直接访问我的 JavaScript 文件?

    我使用 Minify 来缩小并缓存所有脚本请求 我只希望我的用户能够访问 JavaScript 文件的缩小版本 缩小位于www example com min我的脚本位于www example com scripts 如何阻止直接访问doc
  • 如何在 PHP 中使用 cURL 发出同时包含 GET 和 POST 参数的请求?

    其他人已经问过如何从 perl java bash 等执行此操作 但我需要在 PHP 中执行此操作 并且我没有看到任何已提出的专门与 PHP 相关的问题 或包含 PHP 的答案 My code ch curl init url curl s
  • 限制自己超载外部 API 的速率

    我发现了很多信息和脚本示例 展示了如何对 API 用户进行速率限制 但我无法找到任何示例来说明在施加这些限制时如何对您自己的 API 请求进行速率限制 我总是用诸如以下的代码来限制我的脚本sleep or usleep命令 但感觉这是一种低
  • 语法错误,第 288 行出现意外的“endif”(T_ENDIF)[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我一直在离线处理我的 WordPress 网站的此代码错误 解析错误 语法错误 homez 541 photoher marie
  • phpunit测试调用其他需要mock的类方法的方法

    我正在尝试创建一个非常标准的单元测试 在其中调用一个方法并断言它的响应 但是我正在测试的方法调用同一类中的另一个方法 该方法做了一些繁重的工作 我想模拟该方法 但仍按原样执行我正在测试的方法 仅使用从调用另一种方法返回的模拟值 我简化了示例
  • Sonata DateTimePickerType 类默认日期显示错误的日期时间格式

    我陷入困境 我不知道如何使用 sonata DateTimePickerType 类正确设置默认日期和时间 我尝试了不同的方法 但到目前为止 没有一种方法没有帮助 在下面的截图中 help 键显示正确的日期和时间 但是当我使用 dp 默认日
  • MVC 模式中的验证层

    验证模型将使用的数据的最佳位置在哪里 例如 考虑登记表 我们有一些来自注册表的数据 那么验证这些数据的最佳位置在哪里 我们应该通过 if 语句或特殊的验证器类来检查每个数据 这意味着大量的编码 所以我想了解在哪里可以做到这一点 在控制器中
  • 从数据库填充复选框

    我有两个表 第一个由与名称关联的 id 组成 1 汽车 2 火车 3 普通 ETC 第二个表由两个字段 user id 和第一个表中的 id 组成 例如 1 1 2 1 3 当用户转到该页面时 我试图重新填充选定的复选框 首先 您查询数据库
  • URL 中的 %2F 中断并且未引用所需的 .php 文件 [重复]

    这个问题在这里已经有答案了 我需要将 作为变量作为 URL 的一部分传递 我的结构如下所示 www domain com listings page 1 city Burnaby South type Townhome bedroom 2
  • 如何使用 XPath 正则表达式匹配 URL

    需要 XPath 方面的帮助 我有这样一个XML
  • php curl 使用 GET 发送变量 奇怪的结果

    我正在尝试调用远程站点上页面中的网址 决定使用curl 在远程站点上 url 变量显示为 REQUEST Array var1 gt val1 amp var2 gt val2 amp var3 gt val3 被调用的url是 http
  • 使用 php-ews(Exchange Web 服务)在特定日期后获取电子邮件

    在我的 PHP 脚本中 我需要弄清楚如何检索指定消息 ID 之后或特定日期之后的所有电子邮件 两者都可以 我只需要检索自上次抓取收件箱以来的新电子邮件 这个收件箱每天收到数千封电子邮件 而且我在 30 天内无法删除任何电子邮件 对于初始导入
  • php 数组中出现意外的 json 输出结构

    我正在尝试转换动态数据 如何从 PHP 获取此 JSON JSON 122240cb 253c 4046 adcd ae81266709a6 item 0 3 这就是我所做的 但它不起作用 PHP json array 122240cb 2
  • 一种无需 JavaScript 即可在 PHP 中确定浏览器宽度的方法?

    首先有吗 或者我必须使用javascript 我希望能够更改使用的 CSS 因此 frex 我可以为移动设备或其他设备加载较小的字体 不幸的是 仅使用 PHP 无法检测用户分辨率 如果您使用 Javascript 则可以在 cookie 中

随机推荐

  • mrjob组合器不工作python

    简单的映射组合reduce程序 映射column 1与值column 3并追加 在相同键和附加的每个映射器输出中 减少相同密钥的输出后 input 1 and input 2两个文件都包含 a 1 2 3 a 4 5 6 Code is f
  • Scipy.sparse.csr_matrix:如何获取前十个值和索引?

    我有一个大csr matrix我对前十个值及其每行的索引感兴趣 但我没有找到一个合适的方法来操纵矩阵 这是我当前的解决方案 主要思想是逐行处理它们 row csr matrix getrow row number toarray 0 rav
  • MediaSessionCompat:面向 S+(版本 31 及更高版本)要求在创建 PendingIntent 时指定 FLAG_IMMUTABLE 或 FLAG_MUTABLE 之一

    我正在尝试将我的应用程序更新到 Android SDK 31 但我遇到了 MediaSessionCompat 问题 我有一个扩展 MediaBrowserServiceCompat 的 MediaService 并在该服务的 onCrea
  • 如何在不使用 Visual Studio 的情况下编译并运行 C# 程序? [复制]

    这个问题在这里已经有答案了 我对 C 很陌生 我刚刚使用 Visual Studio 运行了 C Hello World 程序 我可以在不使用 Visual Studio 的情况下运行或编译 C 程序吗 如果可以的话我应该使用哪个编译器 T
  • 在django中迁移模型时如何解决SQLdecode错误?

    我是 django 新手 我已经创建了一个项目和应用程序 我想将我的项目连接到 mongodb 当我进入python manage py migrate命令 我收到下面提到的错误 我已经删除了数据库并清除了 django migration
  • 如何使用 Wicket 密码保护页面?

    我想用密码保护 Wicket 中的网页 以便用户只有在登录后才能访问它 我还希望该页面显示登录页面 然后在登录用户尝试访问的原始页面后 这是如何用检票口完成的 我已经创建了一个登录页面并扩展了会话类 框架提供的方式是提供一个授权策略 htt
  • 是否可以将泛型类型限制为仅允许已知属性?

    如果向函数提供的对象具有太多属性 则会出现错误 type Options str a b function foo a Options return a str const resultA foo str a extraOption err
  • 迭代包括空行在内的行

    给定一个带有一些空行的多行字符串 我如何在Lua中迭代行包括空行 local s foo nbar n njim for line in magiclines s do print line and blank or line end gt
  • Spark:创建嵌套架构

    伴随着火花 import spark implicits val data Seq 1 value11 value12 2 value21 value22 3 value31 value32 val df data toDF id v1 d
  • 使用 cURL 访问 API 可以正常工作,但使用 Fetch API 则不行 [重复]

    这个问题在这里已经有答案了 我知道这个问题已经得到解决lotSO 上的次数 但所有答案大多都是 向服务器添加某个标头 在这种情况下 API Shopify 工作得非常好 并且可以通过curl轻松访问 我已经使用 Axios 库和 Fetch
  • 如何动态刷新 .NET 数据绑定转发器控件

    我有一个 NET repeater控制即data bound到一个列表 作为中继器的一部分Item Collection 我有一个 删除按钮 可以有效地删除当前的列表元素 这有效 在代码隐藏中我可以成功地从datasource of the
  • 在React中,如何防止组件的CSS导入应用于整个应用程序?

    我在用着Facebook 的 create react 应用 https github com facebookincubator create react app对于我的应用程序 在我的 Login js 容器中 我像这样导入 CSS i
  • 使用 jquery 动态添加画布

    我已将所有代码包含在这个小提琴中 http jsfiddle net RymyY http jsfiddle net RymyY 我的问题涉及左侧的 添加形状 按钮 我希望每次单击第二个添加按钮时都能够添加一个新画布 但我无法让它工作 类似
  • OpenOffice pyno“全选”

    有谁知道如何使用 OO uno 桥接 api 在 Calc 工作表中 选择全部 或者 找到最大使用的行数和列数也可以 我想要做的是将格式应用于电子表格中的所有单元格 原因是我将工作表保存为 csv 因此除非格式提供足够的小数位 否则数字不会
  • 将 Expression> 通用拆箱为 Expression>

    正如标题中提到的 我有一个表达式 其中结果类型 存储 在object 这可以是all我的域类 有没有办法得到具体的表达方式 拆箱 如果我正确理解你的问题 你可能正在寻找的是表达式 转换 http msdn microsoft com en
  • Vue Native 始终执行 App.js 而不是 .vue

    我做了vue native安装的第一个过程 我正在遵循 入门 Hello world教程 https vue native io getting started html https vue native io getting starte
  • 根据文件的第二列对数据进行排序

    我有一个 2 列的文件n行数 第 1 列包含names和第2列age 我想根据以下内容按升序对该文件的内容进行排序age 在第二列 结果应该显示name最年轻的人以及name然后是第二年轻的人等等 关于单行 shell 或 bash 脚本的
  • 如何从 C++ 中加载和调用 VBScript 函数?

    我们的客户要求在我们的产品中发生特定操作时调用 VBScript 函数 我一直在尝试研究 Windows 脚本技术 但很难找到我真正需要的东西 希望你们中的一些人能够提供帮助 我们的产品是原生 C Windows 产品 客户将指定一个 VB
  • 将 sinon 模拟与 nodeunit 一起使用

    我正在学习使用 sinon 与nodeunit https github com caolan nodeunit 专门做嘲笑 这推荐方法 http sinonjs org nodeunit 是使用正节点单元 https github com
  • 如何提取html注释和节点包含的所有html?

    我正在创建一个小型网络应用程序来帮助我管理和分析网站内容 而 cURL 是我最喜欢的新玩具 我已经弄清楚如何提取有关各种元素的信息 如何查找具有特定类的所有元素等 但我遇到了两个问题 见下文 我希望有一些漂亮的 xpath 答案 但如果我必