数据通过前端显示在服务器上,node搭建本地服务器,接受post请求,返回爬虫爬取的数据,log上都显示成功,但是前端接到的数据是catch中的数据。...

该博客介绍了如何使用Node.js创建一个本地服务器,该服务器接收POST请求并从SegmentFault网站爬取数据。作者通过http和https模块实现了服务器功能,并使用cheerio库解析HTML获取数据。然而,存在前端接收到错误的问题,尽管在命令行中显示爬取成功。
摘要由CSDN通过智能技术生成

用node搭建了一个本地服务器,主要的功能是,接受Post请求,然后去sf上面爬数据返回,显示的情况是,在cmd里面打印出来,显示的是爬取成功,但是前台接到的确实catch中的error2。

下面是代码。

479361c9a8ef55c70edba7237e1fc2d7.gif

47b368b542fa063be233095c9be1bdf6.gif

61c6ddab5cfd2e6ab1918d35bde27197.gif

let http = require("http");

let url = require("url"); //解析get请求

let query = require("querystring"); //post请求相关

// let creep = require('./creep');

http.createServer(function(request,response){

//post

response.setHeader("Access-Control-Allow-Origin","*");

response.setHeader(

"Access-Control-Allow-Methods",

"PUT, GET, POST, DELETE, HEAD, PATCH"

);

// var params = url.parse(request.url,true);

let postData = "";

request.addListener("data",function(chunk){

postData += chunk;

});

//end 表示全部body接受完毕

request.addListener("end",function(){

creepDataForUrl().then(function(creepRes){

response.end(creepRes);

},function(e){

console.log("fail");

}).catch(function(e){

console.log("error:" +JSON.stringify(e));

})

});

}).listen(8011);

const https = require('https');

const cheerio = require('cheerio');

function creepDataForUrl(){

return new Promise(function(resolve,rej){

https.get('https://segmentfault.com', (res) => {

var data = '';

res.on('data', (chunk) => {

data += chunk;

});

res.on('end', () => {

let temp = getDataFromHtml(data);

console.log(temp.length);

resolve(temp);

})

}).on('error', (e) => {

console.log("这里出错了:" + JSON.stringify(e));

rej && rej(e);

});

});

}

function getDataFromHtml(htmlData){

let $ = cheerio.load(htmlData);

let items = $("div.news-item.stream__item.clearfix");

let resAry=[];

items.each(function(index,item){

let el = $(item);

resAry.push({

title:el.find(".news__item-info a").first().text(),

});

});

return resAry;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值