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

JavaScript基于cheerio爬取职位信息时如何仅提取薪资字段

问题根源

你当前的选择器ul.job-metadata > li会匹配职位信息栏下的所有列表项,而这个列表本身同时包含工作地点、薪资、雇佣类型等多类职位元数据,直接提取所有匹配项的文本自然会把非薪资的内容一起抓下来。
另外原代码里的链接提取逻辑本身无效:薪资项是纯文本节点,不存在href属性,原逻辑只会拿到列表第一个li(通常是工作地点项)的属性值,和薪资无关。

修正方法

reed的职位列表中,薪资对应的<li>节点带有专属的.salary类名,你只需要把选择器限定到这个类的节点,就能过滤掉地点等其他无关内容。
修正后的可运行代码如下:

var request = require('request');
var cheerio = require('cheerio');
var fs = require('fs');

request("https://www.reed.co.uk/jobs/manager-jobs", function(error, response, body) {
  if(error) {
    console.log("Error: " + error);
    return;
  }
  console.log("Status code: " + response.statusCode);

  var $ = cheerio.load(body);
  // 先清空历史写入的文件,避免多次运行内容重复
  fs.writeFileSync('salaries.txt', '');

  $('div.row:has(ul.job-metadata)').each(function() {
    // 仅匹配薪资类的列表项,过滤其他无关信息
    const salaryContent = $(this).find('ul.job-metadata > li.salary').text().trim();
    // 跳过未标注薪资的职位,避免写入空行
    if (salaryContent) {
      fs.appendFileSync('salaries.txt', salaryContent + '\n');
    }
  });
});
额外说明

你提到的「提取薪资计算后直接修改网页展示、模拟检查元素改页面」的需求,不需要用Node.js爬取写文件的方案:直接在浏览器控制台写DOM操作脚本,或者用油猴脚本注入页面,直接选中对应薪资节点修改文本内容即可,和手动在DevTools里改元素的效果完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:36:27