Sitemap-解析器
解析网站地图 XML 以获取爬虫所需的所有 URL。
版本 2
安装
npm install sitemapper --save
简单示例
const Sitemapper = require('sitemapper');
const sitemap = new Sitemapper();
sitemap.fetch('https://wp.seantburke.com/sitemap.xml').then(function(sites) {
console.log(sites);
});
ES6 示例
import Sitemapper from 'sitemapper';
(async () => {
const Google = new Sitemapper({
url: 'https://www.google.com/work/sitemap.xml',
timeout: 15000, // 15 秒
});
try {
const { sites } = await Google.fetch();
console.log(sites);
} catch (error) {
console.log(error);
}
})();
// 或者
const sitemapper = new Sitemapper();
sitemapper.timeout = 5000;
sitemapper.fetch('https://wp.seantburke.com/sitemap.xml')
.then(({ url, sites }) => console.log(`url:${url}`, 'sites:', sites))
.catch(error => console.log(error));
选项
在实例化 Sitemapper 对象时,你可以添加以下选项:
requestHeaders
: (对象) - 额外的请求头(例如User-Agent
)timeout
: (数字) - 单个 URL 的最大超时时间(毫秒)。默认:15000(15 秒)url
: (字符串) - 要爬取的网站地图 URLdebug
: (布尔值) - 启用/禁用调试控制台日志。默认:Falseconcurrency
: (数字) - 设置同时爬取网站地图的最大线程数。默认:10retries
: (数字) - 设置在出现错误响应(例如 404 或超时)时尝试重试的最大次数。默认:0rejectUnauthorized
: (布尔值) - 如果为 true,将在遇到无效证书(如过期或自签名)时抛出错误。默认:Truelastmod
: (数字) - 返回的 URL 允许的最小 lastmod 值时间戳field
: (对象) - 从网站地图返回的字段对象。例如:{ loc: true, lastmod: true, changefreq: true, priority: true }
。省略某个字段与将其设置为field: false
效果相同。如果未指定,sitemapper 默认返回"经典"的 URL 数组。
const sitemapper = new Sitemapper({
url: 'https://art-works.community/sitemap.xml',
rejectUnauthorized: true,
timeout: 15000,
requestHeaders: {
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:81.0) Gecko/20100101 Firefox/81.0'
}
});
使用所有可用选项的示例:
const sitemapper = new Sitemapper({
url: 'https://art-works.community/sitemap.xml',
timeout: 15000,
requestHeaders: {
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:81.0) Gecko/20100101 Firefox/81.0'
},
debug: true,
concurrency: 2,
retries: 1,
});
ES5 示例
var Sitemapper = require('sitemapper');
var Google = new Sitemapper({
url: 'https://www.google.com/work/sitemap.xml',
timeout: 15000 //15 秒
});
Google.fetch()
.then(function (data) {
console.log(data);
})
.catch(function (error) {
console.log(error);
});
// 或者
var sitemapper = new Sitemapper();
sitemapper.timeout = 5000;
sitemapper.fetch('https://wp.seantburke.com/sitemap.xml')
.then(function (data) {
console.log(data);
})
.catch(function (error) {
console.log(error);
});
版本 1
npm install sitemapper@1.1.1 --save
简单示例
var Sitemapper = require('sitemapper');
var sitemapper = new Sitemapper();
sitemapper.getSites('https://wp.seantburke.com/sitemap.xml', function(err, sites) {
if (!err) {
console.log(sites);
}
});