当前位置: 首页 > 知识库问答 >
问题:

PHP DOM/XPath检查元素span类值

齐志勇
2023-03-14

在curl请求中,我有一个html表,其结构如下所示。现在,我只想提取包含带有空类的span元素的表行,而不是包含class=“subcomponent”的表行。我成功地尝试了Xpath来查找带有空类的元素,但是如何获取整个,甚至是包含Version和partnumber的特定节点。提前谢了。

<table>
...
<tbody>
    <tr>
        <td></td>
        <td></td>
        <td>
            <span class="">Product</span>
        </td>
        <td>Version</td>
        <td>Partnumber</td>
    </tr>
    <tr>
        <td></td>
        <td></td>
        <td>
            <span class="subcomponent">Component</span>
        </td>
        <td>Version</td>
        <td>Partnumber</td>
    </tr>
</tbody>

我的PHP代码

$doc = new DOMdocument();
libxml_use_internal_errors(true);
$doc->loadHTML($page);
$doc->saveHTML();
$xpath = new DOMXpath($doc);
$query ='//span[@class=""]';
$entries = $xpath->query($query);

foreach ($entries as $entry) {
    echo $entry->C14N();
}

共有1个答案

申辉
2023-03-14

要使用SimpleXML访问表行本身,可以使用以下方法:

$sxml = simplexml_load_string('<table>...</table>');

$rows = $sxml->xpath('//tr[td/span[@class=""]]');

foreach ($rows as $row) {
  echo "Version: ", $row->td[3], ", Partnumber: ", $row->td[4];
}

XPath的工作方式是选择所有具有子标记的,该标记本身具有带有空白类的子

在这个循环中,您需要通过数字访问每行的子单元格,因为您的示例没有指示它们以任何其他方式标记。我假设表结构不会经常改变,所以应该没问题。

$doc = new DOMdocument;
libxml_use_internal_errors(true);
$doc->loadHTML($page);
$xpath = new DOMXpath($doc);
$rows = $xpath->query('//tr[td/span[@class=""]]');

foreach ($rows as $row) {
    $cells = $row->getElementsByTagName('td');

    $version = $cells->item(3)->nodeValue;
    $partNumber = $cells->item(4)->nodeValue;

    echo "Version: {$version}, Part Number: {$partNumber}", PHP_EOL;
}
 类似资料:
  • 我必须创建一个函数,它接受两个参数,一个选择器和一个字符串,它将把选定元素的文本内容中的每个单词放到一个新的“span”元素中。每个新的“span”元素必须有一个唯一的ID,由前缀和一个连续整数(如par0、par1等)组合而成。该函数还需要处理嵌套的子元素... 任何帮助创建这将是高度赞赏的。谢谢你...

  • span元素也是一个没有语义的元素,类似于 div 元素。不过,span 是行内元素,它只能包围字词或短语,而 div 元素适合包含块级内容。 如果想为一小块内容定义 class、id、dir、lang 等属性,或定义特殊的显示风格,或定义Javascript行为,而又没有相应的HTML语义元素时,就可以使用 span元素。 如,以下段落中,通过三个 span元素,定义了三小块内容,并为它们分别应

  • 我正在尝试通过检查网页并识别我要提取的内容的XPath来刮取一些web元素。对于某些元素,我得到了预期的结果,而对于其他元素,我没有得到预期的结果。请参阅下面的可复制示例: 上载我要分析的页面: 然后,我使用XPath语言标识想要查看的元素的路径: 为了提取我希望的值,我现在在文章列表中查找元素time和span。最终的结果是一个时间表列表,但也是一个空的阅读时间列表。我尝试使用不同的版本而不是,

  • 请帮助我,我正在尝试选择一个图片,这是一个链接(一个网站上的培训师) 这是我的代码:

  • 我需要从以下span元素中检索文本,而不需要将其拆分为文本部分。 我想检索一个没有破损的文本块。我正在使用这个xpath测试器http://www.freeformatter.com/xpath-tester.html