上一篇
本文目录导读:
🚀 Node.js + Cheerio:三步搞定网页数据抓取!
(信息来源:2025-08 Cheerio官方文档及实战案例)
假设你是个前端开发者,老板突然甩给你一个任务:“把竞品网站的所有文章标题和链接爬下来,明天开会用!”
你打开网页一看,好家伙!全是动态加载的内容,用浏览器直接复制根本行不通,这时候,Node.js + Cheerio 就是你的救星!💪
npm install cheerio axios # 同时安装爬虫库和解析库
const cheerio = require('cheerio'); const axios = require('axios'); // 1. 发送HTTP请求获取网页内容 axios.get('https://example.com/blog') .then(response => { // 2. 用Cheerio加载HTML const $ = cheerio.load(response.data); // 3. 像jQuery一样提取数据! $('article.post').each((index, element) => { const title = $(element).find('h2').text(); const link = $(element).find('a').attr('href'); console.log(`📌 ${title}: ${link}`); }); }) .catch(err => console.error('爬取失败!', err));
精准选择器
$('.class#id[attr=value]') // 类名+ID+属性三连击 $('div > p:first-child') // 精准定位子元素
属性操作
$('img').attr('src', 'new.jpg'); // 批量修改图片地址 $('a').removeAttr('target'); // 干掉所有链接的target属性
修改**
$('p').text('修改后的文本'); // 直接替换段落内容 $('#header').html('<h1>新标题</h1>'); // 替换整个区块
条件过滤
$('li').filter('.active').each(...) // 只处理激活状态的列表项 $('input').not('[type=hidden]') // 排除隐藏表单
伪类选择器
$('tr:even') // 表格隔行变色 $('input:checked') // 获取所有选中的复选框
忘记加载HTML
❌ 错误:const $ = cheerio;
✅ 正确:const $ = cheerio.load(htmlString);
选择器写错位置
❌ 错误:$('div').find('p').text()
(可能返回undefined)
✅ 正确:先检查元素是否存在:if ($('div p').length > 0) { ... }
忽略编码问题
❌ 错误:直接解析中文网页导致乱码
✅ 正确:加载时指定编码:cheerio.load(html, { decodeEntities: false });
const fetchNews = async () => { const { data } = await axios.get('https://news.ycombinator.com'); const $ = cheerio.load(data); const articles = []; $('a.storylink').each((i, elem) => { articles.push({ title: $(elem).text(), url: $(elem).attr('href'), score: $(elem).closest('tr').next().find('.score').text() }); }); console.log('📰 今日热门文章:', articles.slice(0, 5)); }; fetchNews();
cheerio.load(xml, { xmlMode: true })
想快速测试选择器?直接在浏览器控制台运行:
const $ = require('cheerio').load(document.documentElement.outerHTML); $('div.content').text(); // 立即看到结果!
你准备好用Cheerio征服数据世界了吗?💻
本文由 业务大全 于2025-08-21发表在【云服务器提供商】,文中图片由(业务大全)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vds.7tqx.com/wenda/681860.html
发表评论