Web抓取获取服务器的响应文本

时间:2018-02-04 10:00:46

标签: node.js web-scraping

嗨,大家好几周都在努力让这个工作起来。我读了很多,我几乎接近解决方案。我只是希望有经验的人可以帮助我。

此时我有:

  • digitalocean的服务器
  • 2个测试脚本。

为了测试我的服务器,我使用了这段代码:

var http = require('http');
http.createServer(function (req, res) {
 res.writeHead(200, {'Content-Type': 'text/plain'});
 res.end('Hello World test sucess\n');
}).listen(8080); 
console.log('Server is running at http://178.62.253.206:8080/');

哪个工作正常

我只是想让我的刮刀脚本使用这个来将html响应文本加载到控制台中:

var request = require('request');
var cheerio = require('cheerio');

request('http://www.xscores.com/soccer', function (error, response, html) {
  if (!error && response.statusCode == 200) {
    console.log(html);
  }
});

我真的想以某种方式合并这两个代码。意思是我想将响应文本加载到我的服务器中。我尝试了几件事,但我不确定我应该如何表达代码。

非常感谢任何帮助

frederik

2 个答案:

答案 0 :(得分:1)

由于您要发送html内容,请将content-type更改为'text/html'并尝试以下操作:

var http = require('http');
var request = require('request');
var cheerio = require('cheerio');

http.createServer(function (req, res) {

    request('http://www.xscores.com/soccer', function (error, response, html) {
        if (!error && response.statusCode == 200) {
            console.log(html);
            res.writeHead(200, {
                'Content-Type': 'text/html'
            });
            res.end(html);
        }
    });
}).listen(8080);


console.log('Server is running at http://178.62.253.206:8080/');

答案 1 :(得分:0)

看起来应该是这样的!

var http = require('http');
var request = require('request');
var cheerio = require('cheerio');

http.createServer(function (req, res) {
   request('http://www.xscores.com/soccer', function   (error, response, html) {
   if (!error && response.statusCode == 200) {
       res.writeHead(200, { 'Content-Type':'text/plain'});
       res.end('html:'+html);
   }

}); })听(8080);     console.log('服务器正在http://178.62.253.206:8080/')运行;