首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NodeJS xRay模块对象字符串html删除

NodeJS xRay模块对象字符串html删除
EN

Stack Overflow用户
提问于 2021-02-02 12:18:36
回答 1查看 44关注 0票数 0

我使用nodejs的X射线模块提取产品名称和产品价格。当我抓取的时候,一些像/n这样的htm表达式带有文本。我想替换所有的html代码,用替换的版本创建对象。

我有这样的密码:

代码语言:javascript
复制
var Xray = require('x-ray')
var x = Xray()
 
var urls=['link','link','link']
 
for(var i = 0; i < urls.length; i++){
    x(urls[i], {
            title: '#sp-title',
            price: '.lastPrice'.replace(/(<([^>]+)>)/ig,"").trim()
        })(function(err, obj) {
        console.log(obj);
    })
}

上面的示例代码从3个不同链接的循环中获取数据,并作为一个对象保存,输出如下所示。

代码语言:javascript
复制
{
  title: 'King P 1110 Exotic Katı Meyve Sıkacağı',
  price: '\n                    549,00 TL                '
}
{
  title: 'Xiaomi Mi Pro 10000 mAh Type-C Taşınabilir Şarj Cihazı',
  price: '\n                    144,14 TL                '
}
{
  title: 'Fakir River  Çay Makinesi',
  price: '\n                    505,50 TL                '
}

此外,如何检查此页面中是否存在一个元素?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-01-14 22:52:40

所以你想改变

代码语言:javascript
复制
'\n                    549,00 TL                '

代码语言:javascript
复制
549,00 TL

我希望你的问题是对的:

它只是一个新的行(\n)和空空间,所以如果您修剪结果,您将得到您想要的。

X射线允许您添加过滤器并将它们应用于您的查询:

代码语言:javascript
复制
var Xray = require('x-ray')
const x = Xray({
    filters: {
        trim: function (value) {
            return typeof value === 'string' ? value.trim() : value
        },
        low: function (value) {
            return typeof value === 'string' ? value.toLocaleLowerCase() : value
        },
        status: function (value) {
            newv = value.replace("Status: ", "")
            return newv
        },
        lines: function (value) {
            noLines = value.replace(/\r?\n|\r/g, "")
            return noLines
        },
        punto: function (value) {
            comments = value.replace(/.+?(?=·)/, "").replace('comments', '').replace('·', '')
            return comments
        },
        toNum: function (value) {
            return parseInt(value)
        }
    }
})

你可以添加任何你想要的过滤器,然后在你的代码上放一个像这样的“\\ nameOfFilter”:

代码语言:javascript
复制
x(l.link, '.Item', [{
                    post_time: '.DiscussionMeta span a time@datetime | trim',
                    comment_time: '.CommentMeta span a time@datetime | trim',
                    origin: '.Category a | trim'
                }])

在这里,您有每一个选项,通过一个修剪过滤器。如果一切顺利的话,结果会和你所期待的一样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66009602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档