request获取页面html内容,request、request-promise、cheerio抓取网页内容
爬蟲是一種自動獲取網(wǎng)頁內(nèi)容的程序。是搜索引擎的重要組成部分,因此搜索引擎優(yōu)化很大程度上就是針對爬蟲而做出的優(yōu)化,說白了爬蟲拿到的就是您網(wǎng)頁上的html代碼。
新建目錄
新建grabTest目錄cd grabTest
進入目錄npm init
一路回車創(chuàng)建package.json。
安裝
request(簡化的HTTP客戶端)、request-promise(request返回Promise使用async/ await)、cheerio(將抓取頁面的html代碼轉(zhuǎn)為DOM,可以稱之為是node版的jq)npm i request request-promise cheerio
查看package.json文件
說明安裝成功了。
目錄下新建read.js//request-promise是讓request支持了promise的語法
const rp = require('request-promise');
const cheerio = require('cheerio');
const html_encode = function(str){
var s = "";
if (str.length == 0) return "";
s = str.replace(/&/g, "&");
s = s.replace(/
s = s.replace(/>/g, ">");
s = s.replace(/ /g, "?");
s = s.replace(/\'/g, "'");
s = s.replace(/\"/g, """);
s = s.replace(/\n/g, "
");
return s;
}
const read = (url) =>{
const opts = {
url,// 目標頁面
transform:body => {
// body為目標頁面抓取到的html代碼
// 通過cheerio.load方法可以把html代碼轉(zhuǎn)換成可以操作的DOM結構
return cheerio.load(body);
}
};
return rp(opts).then($=>{
let result = [];// 結果數(shù)組
//遍歷列表標題a標簽
$('.itemTitle a').each((index,item) => {
const ele = $(item);
const url = ele.attr('href');
const title = ele.text();
//取a標簽href進入內(nèi)頁取文章內(nèi)容,閉包異步獲取
(async function(index){
const $$ = await rp({
url,
transform:body => {
// cheerio中的.html()方法默認開啟轉(zhuǎn)換實體編碼
// decodeEntities:false關閉轉(zhuǎn)換實體編碼
return cheerio.load(body,{decodeEntities:false});
}
});
$$('.article-content script').remove();
$$('.article-content ins').remove();
//html_encode選擇性、&等轉(zhuǎn)義成實體編碼
result[index].contentText = html_encode( $$('.article-content').html() );
})(index);
result.push({
title
});
console.log(title);
});
// 返回結果數(shù)組
return result;
})
};
read('https://www.xinran001.com/');
目錄下執(zhí)行Nodenode read.js
在控制臺上就可以看到打印出的文章標題。
總結
以上是生活随笔為你收集整理的request获取页面html内容,request、request-promise、cheerio抓取网页内容的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果菠萝笔html5游戏在线玩,苹果菠萝
- 下一篇: 深圳更新指标要多久(深圳小汽车指标更新要