一朋友在群里問有沒有什么辦法能夠一次性把這個(gè)鏈接 里的文章保存下來。點(diǎn)開可以看到,其實(shí)就是一個(gè)文章合集。所以需求就是,把這個(gè)文檔中的鏈接里的文章挨個(gè)保存下來。保存形式可以有很多種,可以是圖片,也可以是網(wǎng)頁。這里因?yàn)槭褂?puppeteer 庫的原因,故選擇保存格式格式為PDF。

需求解構(gòu)
完成整個(gè)動(dòng)作,主要分為這兩個(gè)部分。獲取文檔內(nèi)所有文章的鏈接;把每個(gè)鏈接里的內(nèi)容保存為PDF文件。
對(duì)于獲取鏈接,有兩條路,一是使用request模塊請(qǐng)求該網(wǎng)址獲取文檔;二是把網(wǎng)頁保存到本地使用fs模塊獲取文檔內(nèi)容。拿到文檔也就是整個(gè)HTML文檔后,一開始沒想到什么好法子來拿到全部文章鏈接。如果直接在網(wǎng)頁那就好辦,直接DOM的 quertSelectorAll API配合CSS選擇器就可以非常方便地拿到所有 a 鏈接中的 href 屬性。但這里是Node,是DOM外之地。又想到的是直接使用正則匹配,后來還是放棄了這個(gè)做法。在google搜了下才發(fā)現(xiàn)竟然忘了 cheerio 這個(gè)好東西。 cheerio 是一個(gè)專門為服務(wù)端設(shè)計(jì)的快速靈活而簡潔得jQuery實(shí)現(xiàn)。
對(duì)于保存網(wǎng)頁內(nèi)容,我所知道的常規(guī)操作是保存為PDF文件,恰巧之前剛知道的 puppeteer 滿足這樣的需求。 puppeteer 是一個(gè)由 chrome devtools 團(tuán)隊(duì)維護(hù)的提供了控制chrome瀏覽器高級(jí)API的一個(gè)Node庫。除去爬取網(wǎng)頁內(nèi)容保存為PDF文件外,它還可以作為服務(wù)端渲染的一個(gè)方案以及實(shí)現(xiàn)自動(dòng)化測(cè)試的一個(gè)方案。
需求實(shí)現(xiàn)
獲取鏈接
先上這部分代碼
const getHref = function () {
let file = fs.readFileSync('./index.html').toString()
const $ = cheerio.load(file)
let hrefs = $('#sam').find('a')
for (e in hrefs) {
if (hrefs[e].attribs && hrefs[e].attribs['href']) {
hrefArr.push({
index: e,
href: hrefs[e].attribs['href']
})
}
}
fs.writeFileSync('hrefJson.json', JSON.stringify(hrefArr))
}
本文題目:使用Puppeteer爬取微信文章的實(shí)現(xiàn)-創(chuàng)新互聯(lián)
瀏覽路徑:http://chinadenli.net/article38/diihsp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、定制網(wǎng)站、網(wǎng)站維護(hù)、企業(yè)建站、標(biāo)簽優(yōu)化、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容