PHP如何统计网页指定ID/Class元素数量并展示在页眉
招聘站点职位总数精准统计实现方案
你之前统计全页面H3标签的逻辑会混入页面其他模块的无关H3元素,导致结果不准,调整核心是缩小统计范围,只在职位列表的专属容器内匹配带唯一标识的职位元素,不要做全局标签检索,具体调整步骤和代码如下:
- 先在职位列表页按F12打开开发者工具,确认两个关键标识:
- 包裹所有职位条目的外层列表容器的唯一ID/Class(比如常见的容器ID为
job-list、Class为jobs-container) - 单个职位条目/职位标题的唯一标识(比如你代码里已经用到的
jobtitel标识,确认它是单个职位标题的专属ID/Class)
- 包裹所有职位条目的外层列表容器的唯一ID/Class(比如常见的容器ID为
- 用DOMXPath做精准条件查询,不要直接全局调用
getElementsByTagName - 注意DOM扩展返回的节点列表结果要用
->length属性取数量,不要直接用count()函数统计,避免部分PHP版本下结果异常
调整后可直接复用的代码
<?php $htmlString = file_get_contents('https://www.mywebsite.de/unternehmen/jobs/'); // 初始化DOM文档对象 $htmlDom = new DOMDocument; // 屏蔽非规范HTML标签导致的加载警告,载入页面内容 @$htmlDom->loadHTML($htmlString); // 初始化XPath对象用于多条件精准元素查询 $xpath = new DOMXPath($htmlDom); // 替换为你站点实际的元素匹配规则: // 示例规则:统计ID为job-list的职位列表容器下,所有带jobtitel标识的职位标题H3标签 // 如果你是按职位卡片统计,可修改规则为 '//*[@class="job-card"]' 匹配所有带job-card类名的职位卡片元素 $jobNodeList = $xpath->query('//*[@id="job-list"]//h3[@id="jobtitel"]'); // 获取职位总数 $jobTotal = $jobNodeList->length; echo "站点职位总数:" . $jobTotal . "<br/>"; ?>
调试提示:如果首次运行统计结果不对,优先检查XPath里的选择器是否和页面实际元素的ID、Class完全匹配,只要选择器写对,统计结果不会混入其他无关元素。
内容的提问来源于stack exchange,提问作者itsme.vitali
相关产品推荐
相关产品推荐

