You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在JavaScript版Selenium中获取指定类标签内容及特定<tr>标签数量

解决JavaScript版Selenium WebDriver的两个爬取问题

嘿,我来帮你搞定这两个网页爬取里的常见需求,直接上实用方案:

1. 获取带有指定类名的标签内容

你可以通过By.className或者CSS选择器定位目标元素,再获取它们的文本内容。这里给两种常用方法:

方法1:使用className定位

const { By } = require('selenium-webdriver');

// 定位所有带有目标类名的元素
const targetElements = await driver.findElements(By.className('your-target-class'));

// 遍历获取每个元素的文本
for (const elem of targetElements) {
  // getText() 获取可见文本,适合大多数场景
  const content = await elem.getText();
  console.log('标签内容:', content);
  
  // 如果需要包括隐藏文本,用这个:
  // const fullContent = await elem.getAttribute('textContent');
  // console.log('完整内容:', fullContent);
}

方法2:使用CSS选择器定位(更灵活)

如果你的类名是复合类(比如class="item active"),CSS选择器会更方便:

const targetElements = await driver.findElements(By.cssSelector('.your-target-class'));
// 同样遍历获取内容
for (const elem of targetElements) {
  console.log(await elem.getText());
}

2. 统计页面中恰好包含三个子元素的<tr>标签数量

这里有两种高效的实现方式,都能精准统计符合条件的<tr>:

方法1:使用XPath定位

XPath可以直接筛选出子元素数量等于3的<tr>:

const trElements = await driver.findElements(By.xpath('//tr[count(child::*)=3]'));
console.log(`符合条件的<tr>数量:${trElements.length}`);

解释:count(child::*)=3表示统计当前<tr>的所有子元素(不管标签类型)数量等于3,完全匹配你的需求。

方法2:直接在浏览器上下文执行JS(高效)

如果页面元素很多,这种方式会更快,因为不需要把所有元素都传回Node.js上下文:

const count = await driver.executeScript(() => {
  // 在浏览器里直接遍历所有<tr>
  const allTrs = document.querySelectorAll('tr');
  let matchCount = 0;
  allTrs.forEach(tr => {
    // 判断子元素数量是否恰好为3
    if (tr.children.length === 3) {
      matchCount++;
    }
  });
  return matchCount;
});
console.log(`符合条件的<tr>数量:${count}`);

针对你给出的示例HTML,这两种方法都会返回2,完全符合预期。

内容的提问来源于stack exchange,提问作者morty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:26:22