如何操作从 X 射线抓取器中检索到的默认值 (node.js)
How to manipulate default value retrieved from x-ray scraper (node.js)
这是我的代码:
var Xray = require('x-ray');
var x = Xray();
x('http://someurl.com', 'tr td:nth-child(2)', [{
text: 'a',
url: 'a@href'
}]).write('results.json')
我只需要用每个 a 标签的第一个词填充名为 "text" 的字段。标签值示例:
"FirstWord SecondWord ThirdWord"
实际结果为文本:FirstWord SecondWord ThirdWord
期望的结果文本:FirstWord
我可以对 result.json 文件进行后处理,但我不喜欢那样。
有一个 x-ray 库的分支,由 cbou
它是自定义 x-ray API 有一个函数 prepare 可以改变输出
https://github.com/cbou/x-ray#xrayprepare-str--fn
示例:
function uppercase(str) {
return str.toUpperCase();
}
xray('mat.io')
.prepare('uppercase', uppercase)
.select('title | uppercase')
.run(function(err, title) {
// title == MAT.IO
});
您可以在过滤器中定义您的功能,这在官方 Github 页面中显示
var Xray = require('x-ray');
var x = Xray({
filters: {
trim: function (value) {
return typeof value === 'string' ? value.trim() : value
},
reverse: function (value) {
return typeof value === 'string' ? value.split('').reverse().join('') : value
},
slice: function (value, start , end) {
return typeof value === 'string' ? value.slice(start, end) : value
}
}
});
x('http://mat.io', {
title: 'title | trim | reverse | slice:2,3'
})(function(err, obj) {
/*
{
title: 'oi'
}
*/
})
这是我的代码:
var Xray = require('x-ray');
var x = Xray();
x('http://someurl.com', 'tr td:nth-child(2)', [{
text: 'a',
url: 'a@href'
}]).write('results.json')
我只需要用每个 a 标签的第一个词填充名为 "text" 的字段。标签值示例:
"FirstWord SecondWord ThirdWord"
实际结果为文本:FirstWord SecondWord ThirdWord
期望的结果文本:FirstWord
我可以对 result.json 文件进行后处理,但我不喜欢那样。
有一个 x-ray 库的分支,由 cbou
它是自定义 x-ray API 有一个函数 prepare 可以改变输出
https://github.com/cbou/x-ray#xrayprepare-str--fn
示例:
function uppercase(str) {
return str.toUpperCase();
}
xray('mat.io')
.prepare('uppercase', uppercase)
.select('title | uppercase')
.run(function(err, title) {
// title == MAT.IO
});
您可以在过滤器中定义您的功能,这在官方 Github 页面中显示
var Xray = require('x-ray');
var x = Xray({
filters: {
trim: function (value) {
return typeof value === 'string' ? value.trim() : value
},
reverse: function (value) {
return typeof value === 'string' ? value.split('').reverse().join('') : value
},
slice: function (value, start , end) {
return typeof value === 'string' ? value.slice(start, end) : value
}
}
});
x('http://mat.io', {
title: 'title | trim | reverse | slice:2,3'
})(function(err, obj) {
/*
{
title: 'oi'
}
*/
})