之前寫過一篇使用 Node.js 來開發一個資訊爬蟲,其中的HTML內容提取使用cheerio
設定提取頁面元素,如果只需要抓取一個網站那是沒有什麼問題的,但是如果需要抓取多個網站的話就會產生很多如下面截圖邏輯結構差不多的程式碼,所以就進行了一下優化
達到的效果
根據設定好的資料結構和提取的元素就可以提取對應的資料
資料結構
let obj = {
title: { dom: '.title-link', target: 'text' },
link: { dom: '.title-link', target: 'attr', attrName: 'href' },
content: { dom: '.content-text', target: 'text' }
}
複製程式碼
資料結果
[ { title: '我是標題',
link: 'https://juejin.im',
content: '我是內容' } ]
複製程式碼
實現程式碼
extract () {
// 列表元素
let nodeList = this.$(this.zoneDom).find(this.listDom)
// 列表物件資料提取
nodeList.each((i, e) => {
// 遍歷設定好的資料結構,通過dom和target進行資料提取
Object.keys(this.dataDoms).forEach(objEle => {
})
})
}
複製程式碼
詳細的程式碼地址:Extract.js
這樣就可以啦:)