如何在爬取到一片文章之后给这段文章分段显示
发布于 7 年前 作者 guirenpei 3981 次浏览 来自 问答

具体的问题就是我通过cxheerio爬取到了一章小说 代码如下。 var $ = cheerio.load(html) var chaptercontent = $(’#content’).text().trim() 如上,获取到的chaptercontent,放到我的html页面里面的时候分不了段落。 或者换句话说就是,我不能再获取到这段文字的时候提取出来换行符。 然后获取的结果如下。

翠云峰,绿水湖,神剑山庄! 神剑山庄因剑神谢晓峰而闻名江湖,但谢晓峰却没住在神剑山庄,一个没有剑神谢晓峰的神剑山庄它不是山庄,它是一个武馆。 山庄的演武场中,站着一个矩形方阵,十行十列,刚好百人,每个人都是昂首挺胸,背负双手,每个人的神色都非常肃穆,肃穆中带有少许紧张,紧张中却有无限的期待,他们在期待什么? 他们在期待自己的命运,神剑山庄的大师兄荆无命正站在他们的面前,目寒似冰,如刀锋般地在他们脸上扫来扫去。 荆无命没有说话,其他人就更不敢说话,气氛显得相当的死寂,空气也似乎停止了流动,每个人都觉得呼吸不畅,额头冒着闷汗。 荆无命的目光最后落在方阵中一个身形单薄的少年身上,一丝惊慌闪过少年的双眼,慌忙缩下头来,正准备向后退缩时,荆无命的手指已经指向了他,一个异常冰冷的声音在耳边响起:“你,刘病已,放下手中的剑,从狗洞里爬出去!” 荆无命的手指随着他的话音慢慢地指向墙角那个还算体面的狗洞,那个叫刘病已的少年看着那可恶的手指,深深地咽了一下口水,真想扑上去,狠狠地咬他两口。 但他知道他没能力去咬他的手指,三个月前他曾试过,那时候不是去钻狗洞,而是因为自己练剑练不好,荆无命让他去蹲厕所。 他以最快的速度扑上去,想以最快的速度咬他一口,当他的口离手指仅有三寸距离时,满以为可以一口咬下他手指,在他的眼前甚至看到了飞溅的血花,结果却被阿飞一脚踢了八丈远。 快剑阿飞,在江湖上非常有名,其风头甚至盖过了大师兄荆无命,除了他是剑神谢晓峰的二弟子外,他还有个非常有名的结义大哥,例无虚发的小李飞刀——李寻欢! 进神剑山庄学剑,曾是刘病已的梦想,只是没想到梦想的结局,竟然是钻神剑山庄的狗洞,只因为神剑山庄的规矩很简单,百两银子学剑一年,成绩优异者录其为弟子,走正门,成绩合格者可走偏门,而像他这种学了一年剑,却连剑都拿不稳的人,只能钻狗洞。 刘病已是个孤儿,原本是跟叔叔相依为命住在小孤山的,没想三年前的一个夜晚,一伙黑衣蒙面人闯进他那原本不算家的家,杀了他的叔叔,还杀了一个跟他同龄的小孩,一个从山下捡来的小孩,多年以后,他知道这些人原本是要杀他的,是那个不知名的小孩做了他的替死鬼。 当他从枯井里爬出来的时候,那个家已变成一片废墟,而他的叔叔跟那个不知名的小孩却变成了无头的焦尸,至于他自己则变成一个无依无靠的小乞丐。 两年前他来到翠云峰下的翠云集,翠云集虽然不大,但却非常热闹,只因为这儿是剑神谢晓峰的故里,每个人在茶余饭后的话题都离不开谢晓峰,更离不开谢晓峰与燕十三那惊天地、泣鬼神的一战。 谢晓峰到底有没有破燕十三那毁天灭地的夺命十五剑,一直是大家争论的焦点,有的人说破了,有的人说没破,到底有没有破,也没人知晓,反正谢晓峰从那以后,便没再回来。而燕十三倒底有没有死,也只有天知道。 刘病已非常想进神剑山庄,虽然谢晓峰不在神剑山庄。但进神剑山庄要百两银子,这对他一个身无分文的小乞丐来说,无疑是个天文数字,他以为这一辈子都没法进神剑山庄,没想到在一个风和曰丽的午后,机会来了。 那天,他正在翠云峰上的一棵大树上掏鸟蛋,一条人影如旋风般地从树下飘过,刮起了满天落叶,惊起了林中飞鸟,他从来没见过一个人能跑那么快。 正在惊噫间,那人忽地发出一声杀猪般的惨叫,翠云峰不但有神剑山庄,还有猎户,这满山都有猎户设的捕兽的陷井,那人不小心掉进猎户设的陷井中,早被陷井中暗设的木桩、滚石打砸得断手断脚,体无完肤了。 刘病已好不容易将那人从陷井中拖了出来,见他一副要死不活的样子,心生怜惜,寻思着自己身上没钱,那就把他背到山下的医馆,望医馆门前一放,至于大夫救不救他,那就看他自己的造化了。 刘病已的年纪并不大,加上缺衣少食,身体亦是非常的虚弱,背着这样的一个大汉走在山间的小路上,也着实吃力,路过舍身崖时,脚底一滑,竟将那人摔了下去。 好不容易爬到崖底,却见那人早已变成一滩肉泥,原本是想做好事的,却没想到摊上了人命官司,心中怕得要命,哪敢再行理会?撒腿就跑,却迎面撞进一个人的怀里。 这个人不是别人,正是名满华夏国的四大名捕之一,诸葛神候的得意弟子——追命,而他此刻的任务,正是受开封府包拯所托,前来追捕天下第一银贼——万里独行田伯光。 当追命得知是刘病已摔死田伯光后,非但没有拘捕他归案,反而赏给他一百两银子,这让刘病已非常兴奋,对着追命又拜又谢,如同再生父母。他不知道的是,自己原本应该获得千两银子的,是追命克扣了九百两。 在这之前,刘病已最富的时候身上有十个铜板,那是一个阔少打他十拳后赏给他的,他来到翠云集后做梦都想拥有百两银子,如今这个梦终于成了现实,他捧着这百两银子欢天喜地来到神剑山庄,开始了自己的学剑生涯。 满以为一年之后,纵算成不了剑神谢晓峰那样的人,也要成为荆无命、阿飞那样的人,最不济也要成为神剑山庄的正式弟子,但他的资质实在太差,学了一年剑,竟然连剑都拿不稳,更别说学那些精妙的招式了。 一年期满,迎接他的不是鲜花跟掌声,而是那个黑黝黝的狗洞,望着那个还算体面的狗洞,刘病已的嘴角挂出一丝自嘲的笑意,心里却在想:“我刘病已虽然学剑笨了,但要我钻狗洞,除非我死!” 快剑阿飞手中拿的不是剑,而是一块铁片,在铁片的一端用破布缠着两块竹片,如同小孩的玩具,只有当铁片刺入你咽喉的瞬间,你才知道那不是铁片,而是一把剑,一把快得你没法闪避的剑,一把非常锋利的剑。 阿飞的人如同他的剑,做事讲究的就是一个快字,见刘病已站在那儿一动不动,简直将荆无命的话当成耳边风,心头火起,飞起一脚,踢在他的屁股上。 快剑阿飞这看似平平淡淡的一脚,却有千斤力道,这让一个毫无武功根底的刘病已如何吃受得住?整个人如离弦之箭向大门外飞去! 大门外是山路,山路外则是悬崖,刘病已没有落在山路上,而是直接跌落到了悬崖,只听砰地一声响,接下来便什么都不知道了。 也不知过了多久,当刘病已慢慢醒转时,却见满天的繁星,而自己则躺在一块大青石上,这让刘病已诧异不已,在他的记忆中,明明是在海城大学读书,看见外面快下雨了,然后到阳台上收衣服,结果一阵怪风吹过,自己跌落阳台…… 当刘病已回想到这儿时,猛地翻身坐起,借着星光,这才发现手不是自己的,衣服也不是自己的,更重要的是还有一头的长发,这绝对不是自己,在经过短暂的惊诧后,他的脑海中忽地闪过一个念头,莫非自己穿越了? …………………………………………………………………… (PS:推荐两位朋友的书) 一本是都市娱乐明星,讲述的是一代华语娱乐教父如何雄起的故事。 一本是仙侠小说,讲述的是身怀重宝的少年狄云,如何逃过强敌追杀,得报家仇,踏入仙道至尊的故事。 ;

------------------------------我是YD的分割线 是的,获取到的就是这么一大段没有分段的文字了。 有大神能帮我一下吗?QAQ

10 回复
var chaptercontent = $(’#content’).text().trim()

换成 $(’#content’).html() 试试, text() 默认会清除掉所有的标签,所以没有段落的

试过了。。出来的是编码

@guirenpei 你是怎么显示的?可以直接把html()获取的内容直接作为html插入你的网页。这种方法应该是可行的,我试过。

@youthfighter 我一开始是通过.text().trim() 获取到文本字段,然后赋值,通过ejs在我的网页中显示出来。 如果说直接通过html()获取的话,那放入到我的网页中会不会影响样式??

@youthfighter 结果出来了。。。。 clipboard.png 代码如下。。 下面是爬取分析的代码 exports.analyseContent = function(html){ var $ = cheerio.load(html) var chaptername = $(’.bookname’).find(‘h1’).text().trim() var chaptercontent = $(’#content’).html() var chapterdata = { chaptername : chaptername, chaptercontent : chaptercontent } console.log(chaptercontent) return chapterdata } 下面是放入到网页中的代码 其中content.chaptercontent 就是return的数据取出来的值 <div class=“content-panel”> <div class=“bl-20”> </div> <div class=“shadow”></div> <div class=“content-panel-body”> <%=content.chaptercontent%> </div> <div class=“shadow”></div> <div class=“bl-20”></div> <div class=“quickly”> <a class=“prev” href="#"></a> <a class=“back” href="#"></a> <a class=“next” href="#"></a> </div> </div>

有人吗 自顶。。求大神帮忙

cheerio.load(body,{decodeEntities: false});然后$(’#content’).html()试试

<%-content.chaptercontent%>试试?

显示乱码应该是转码不对的问题,你可以跟踪一下chaptercontent 在哪出了 问题。ejs在网页中插入html用的是<%-content.chaptercontent%>,插入变量用<%=%>,插入代码用<%%>。

回到顶部