cheerio是nodejs的抓取页面模块,为服务器特别定制的,快速、灵活、实施的jQuery核心实现。适合各种Web爬虫程序。
axios自动重试 设置->传送门
cheerio采集数据还是很简单的,会玩jQuery,就会cheerio。好了废话不多说,直接上代码。
var axios = require('axios');
var cheerio = require('cheerio')
axios.get('https://zhangge.net/5136.html', {
retry: 5,
retryDelay: 1000,
timeout: 6000
})
.then(function (res) {
// 获取网页数据
var $ = cheerio.load(res.data, {
decodeEntities: false
});
// 获取标题
var title = $('.entry-title a').text();
// 获取文章内容
var content = $('.single-content').html();
console.log(title, content);
})
.catch(function (err) {
console.log('failed', err);
});
var axios = require('axios');
var cheerio = require('cheerio');
var fs = require('fs');
var url = require('url');
var path = require('path');
axios.get('https://zhangge.net/5136.html', {
retry: 5,
retryDelay: 1000,
timeout: 6000
})
.then(function (res) {
// 获取网页数据
var $ = cheerio.load(res.data, {
decodeEntities: false
});
// 获取标题
var title = $('.entry-title a').text();
//下载图片
$('.single-content img').each(function (item) {
var img = $(this);
// 由于图片的地址是"//"开头我们需要加上具体的协议才能请求
var imgUrl = 'http:' + img.attr('src');
// 获取文件名
var savePath = path.basename(url.parse(imgUrl).pathname)
// 替换img图片路径
img.attr('src', savePath);
// 下载图片
axios.get(imgUrl, {
retry: 5,
retryDelay: 1000,
timeout: 6000,
responseType: 'stream', // 下载文件需要加上这个配置 不然在使用res.data.pipe会报错
})
.then(function (res) {
res.data.pipe(fs.createWriteStream(savePath));
});
});
// 获取文章内容
var content = $('.single-content').html();
console.log(title, content);
})
.catch(function (err) {
console.log('failed', err);
});
其他下载附件什么的都和下载图片是一个道理,就不详细的演示了。
如果这篇文章对你有所帮助,可以通过下边的“打赏”功能进行小额的打赏。
本网站部分内容来源于互联网,如有侵犯版权请来信告知,我们将立即处理。