摘要:前言上一小節(jié)說(shuō)道,點(diǎn)擊版面圖片區(qū)域,可獲取到映射的文章鏈接。本節(jié)將著重實(shí)現(xiàn)對(duì)文章的解析,正則匹配走起通過(guò)對(duì)文章結(jié)構(gòu)的比對(duì),調(diào)查發(fā)現(xiàn),文章詳情從的地方開,所以解析文章的函數(shù)如下。
前言
上一小節(jié)說(shuō)道,點(diǎn)擊版面圖片區(qū)域,可獲取到映射的文章鏈接。本節(jié)將著重實(shí)現(xiàn)對(duì)文章html的解析,正則匹配走起~
通過(guò)對(duì)文章html結(jié)構(gòu)的比對(duì),調(diào)查發(fā)現(xiàn),文章詳情從class="text_c"的地方開,所以解析文章的函數(shù)如下。
在utils目錄下新建articleExtract.js
var articleObj = {}; var articleExtract = function (html, newsHref, pagenum) { articleObj["newshref"] = newsHref; //該文章的鏈接 articleObj["pagenum"] = pagenum; //該文章所在版面編號(hào) var html = html.replace(/
/ig, " "); // console.log(articleHtml); /*正則*/ //文章部分 var titleReg = /]+class="text_c"[^>]*>[sS]+?/i; //會(huì)匹配到class=lai的結(jié)束
[sS]*?
/i; //中間變量 // var articleHtml = articleMatch[0];//存放匹配的文章部分的html var titleHtml = ""; var imgHtmlArray = ""; //存放匹配的正文圖片部分的html var contentHtml = ""; //存放匹配的正文文章部分的html //正則匹配結(jié)果 var titleMatch = html.match(titleReg); //存放匹配的文章的結(jié)果 var sourceMatch = html.match(sourceReg); //存放的標(biāo)題部分的html var imgMatch = html.match(imgReg); //存放匹配的正文圖片部分的html var contentMatch = html.match(contentReg); //存放匹配的正文文章部分的html //結(jié)果變量 var h1 = ""; //主標(biāo)題 var h2 = ""; //副標(biāo)題 var h3 = ""; //引標(biāo)題 var h4 = ""; //不知道代表啥標(biāo)題 var source = ""; //來(lái)源及日期 var imgArray = []; //圖片及圖片說(shuō)明 var contentArray = []; //文章每段的內(nèi)容 //給中間變量賦值 titleMatch && (titleHtml = titleMatch[0]); sourceMatch && (source = sourceMatch[1].replace(/s+/g, "")); imgMatch && (imgHtmlArray = imgMatch); contentMatch && (contentHtml = contentMatch[0]); /***********圖片***********************/ if (imgHtmlArray) { var i; var imgSrc = "" var imgDesc = "" for (i = 0; i < imgHtmlArray.length; i++) { imgSrc = imgMatch[i].match(//i)[1].replace("../../../", "http://paper.people.com.cn/rmrb/"); imgDesc = imgMatch[i].match(/([sS]*?)
/i)[1] imgArray.push({ imgSrc: imgSrc, imgDesc: imgDesc }) } console.log("圖片匹配", imgArray); } /*************標(biāo)題*********************/ h1 = titleHtml.match(/.*?
/ig); var p = {}; var text = ""; var strong = "strong"; //某些新聞沒(méi)有正文內(nèi)容(比如廣告,只有一張圖片),因此需要判斷一下 if (contents) { for (i = 0; i < contents.length; i++) { var currentP = contents[i]; text = currentP.match(/(.*?)
/i)[1].replace(/( )+/g, " "); if ((text.indexOf("STRONG") != -1) || (text.indexOf("FONT") != -1)) { text = text.match(/(.*?)/i)[1].replace(/( )+/g, " "); contentArray.push({ "text": text, "strong": strong }); } else { contentArray.push({ "text": text }); } } } } articleObj["titleObj"] = { title: h1, sub: h2, quote: h3, unknown: h4, source: source } articleObj["imgArray"] = imgArray articleObj["contentArray"] = contentArray return articleObj } module.exports = articleExtract;修改pages/article/article.js
添加articleExtract函數(shù)
var app = getApp(); //article url var todayDateArray = require("../../utils/util.js").todayDateArray; var articleExtract = require("../../utils/articleExtract.js") var baseUri = "http://paper.people.com.cn/rmrb/html" //拼接url的變量 //... Page({ /** * 頁(yè)面的初始數(shù)據(jù) */ data: { articleObj:{} }, //... onShow: function () { // ... }, //請(qǐng)求文章 getArticle: function (url, newsHref, pagenum) { var self = this; var reqObj = { url: url }; wx.request({ url: url, success:function(res){ var html = res.data; //解析文章html,獲取文章標(biāo)題、內(nèi)容等相關(guān)信息 var tmpArticleObj = articleExtract(html, newsHref, pagenum); console.log("文章解析結(jié)果", tmpArticleObj ) self.setData({ articleObj: tmpArticleObj, }); } }); }, })
文章解析出來(lái)了,下一步就是把他顯示出來(lái)
顯示文章
在article.wxml,把內(nèi)容簡(jiǎn)單的顯示出來(lái)
{{articleObj.titleObj.introTitle}} {{articleObj.titleObj.title}} {{articleObj.titleObj.subTitle}} {{articleObj.titleObj.authors}} {{item.imgAlt}} {{item.text}}
至此,文章詳情算是顯示出來(lái)了,下一步,繼續(xù)完善
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/95600.html
摘要:前言上節(jié)講到,獲取到觸點(diǎn)所在區(qū)域所映射的新聞鏈接。有了新聞的鏈接,就能獲取相應(yīng)的新聞啦。 前言 上節(jié)講到,獲取到觸點(diǎn)所在區(qū)域所映射的新聞鏈接。有了新聞的鏈接,就能獲取相應(yīng)的新聞啦。 代碼實(shí)現(xiàn) 修改paper.js的toArticle方法 toArticle: function (e) { ....... if (href) { wx.navigateTo({...
awesome-github-wechat-weapp 是由OpenDigg整理并維護(hù)的微信小程序開源項(xiàng)目庫(kù)集合。我們會(huì)定期同步上的項(xiàng)目到這里,也歡迎各位 UI組件開發(fā)框架實(shí)用庫(kù)開發(fā)工具服務(wù)端項(xiàng)目實(shí)例Demo UI組件 weui-wxss ★1873 - 同微信原生視覺體驗(yàn)一致的基礎(chǔ)樣式庫(kù)zanui-weapp ★794 - 好用易擴(kuò)展的小程序 UI 庫(kù)wx-charts ★449 - 微信小程...
摘要:前言省略準(zhǔn)備了解微信小程序是什么微信小程序官方文檔了解應(yīng)用狀態(tài)管理方案也是架構(gòu)的具體實(shí)現(xiàn)了解打包工具了解代碼轉(zhuǎn)譯工具原理大致是借助語(yǔ)法分析工具之類的將代碼解析成抽象語(yǔ)法樹再重寫成最終的代碼測(cè)試工具等等請(qǐng)根據(jù)需要選擇微信小程序目前版本的實(shí)現(xiàn)需 前言: 省略... 準(zhǔn)備 了解微信小程序是什么? 微信小程序官方文檔 了解應(yīng)用狀態(tài)管理方案: Redux, 也是Flux架構(gòu)的具體實(shí)現(xiàn) 了解Ja...
摘要:微信應(yīng)用號(hào)小程序資源匯總。每天不定期整理和收集微信小程序相關(guān)資源,方便查閱和學(xué)習(xí),歡迎大家提交新的資源,完善和補(bǔ)充。 wechat-weapp-resource 微信應(yīng)用號(hào)(小程序)資源匯總。 每天不定期整理和收集微信小程序相關(guān)資源,方便查閱和學(xué)習(xí),歡迎大家提交新的資源,完善和補(bǔ)充。 showImg(https://segmentfault.com/img/remote/1460000...
閱讀 2765·2021-11-22 13:54
閱讀 2701·2021-10-14 09:42
閱讀 4046·2021-09-28 09:47
閱讀 2172·2021-09-03 10:28
閱讀 1217·2021-07-26 23:38
閱讀 2568·2019-08-30 15:54
閱讀 2647·2019-08-29 16:35
閱讀 1438·2019-08-29 15:42