以前寫過一篇使用 Node.js 來開發一個資訊爬蟲,其中的HTML內容提取使用cheerio
設置提取頁面元素,若是隻須要抓取一個網站那是沒有什麼問題的,可是若是須要抓取多個網站的話就會產生不少以下面截圖邏輯結構差很少的代碼,因此就進行了一下優化node
根據設置好的數據結構和提取的元素就能夠提取對應的數據git
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.jsgithub
這樣就能夠啦:)bash