【问题标题】:Web scraping Get responsetext to server网络抓取获取响应文本到服务器
【发布时间】:2018-02-04 18:32:43
【问题描述】:

大家好,我已经苦苦挣扎了几个星期,试图让它发挥作用。我读了很多,我几乎接近解决方案。我只是希望比我有更多经验的人可以提供帮助。

此时我有:

  • 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);
  }
});

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

非常感谢任何帮助

弗雷德里克

【问题讨论】:

    标签: node.js web-scraping


    【解决方案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/');
    

    【讨论】:

    • 您好,感谢您的回复。我认为您的代码有效,但该网站变得无响应。一段时间后它会在控制台加载一些信息。我不确定到底出了什么问题。也许是因为它被加载到 ?
    • 好的,我明白了。非常感谢,我会给你们两个代表(不幸的是它不算数)我没想到会这么快得到答案一个 div 元素。然后我就可以开始排序了。我边走边学,两周前我从没想过我能走到这一步……
    • 感谢 bud,我实际上在我的一个选项卡中打开了该教程:) 我认为我会从这一点开始处理解析,它只是需要挖掘的信息太多..
    【解决方案2】:

    它应该看起来像这样!

    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/');

    【讨论】:

    • 这个工作:) 太棒了!!!作为一个附带问题,是否可以将其加载到不同的 div 元素或表格中?
    • 确实可以,但您可能需要在服务器上稍微操作一下 HTML。
    • 非常感谢,我想这个线程已经解决(双重解决)你介意举个例子来说明我如何将它添加到 div 元素中吗?不幸的是,我的知识相当有限..
    • 你可以做一些类似'
      '+html+'
      '的事情。虽然最好从源中删除相应的标签。理想情况下,您会使用库来操作 HTML,有很多方法可以做到这一点。我建议在 jsfiddle.net 上创建一个小提琴并使用您的 html 源代码。很有趣!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多