带有nodejs和cheerio的Web Scraper?

时间:2018-02-07 12:29:28

标签: node.js cheerio

嗨,大家好我真的在这里如此接近一个解决方案,它很痛:/我试图创建一个网络刮板脚本。

到目前为止,我有:

  • digitalOcean的服务器设置
  • 工作脚本
  • 成功下载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) {
       var $ = cheerio.load(html);
       res.writeHead(200, { 'Content-Type':'text/plain'});
       res.end('html:'+html);

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

这仍然是Wip进度,我还没有设置任何数据库所以总体计划是将所有这些信息加载到我的服务器页面上的表或div元素中。

我想知道如何通过xscores上的元素循环播放" score_home_txt score_cell wrap"主队所在的位置并在我的服务器上显示?

它的构建如下:

<div class="score_teams  score_cell">
<div class="score_home score_cell">
<div class="score_home_txt score_cell wrap">
TRACTOR SAZI
</div>

我过去常常使用excel VBA进行此过程,并且使用cheerio这样做是一种全新的体验。

任何帮助都会非常感激

弗雷德里克

1 个答案:

答案 0 :(得分:1)

这是循环显示名称的方法:

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) {
            var $ = cheerio.load(html);
            var list_items = "";
            $('div.score_home_txt.score_cell.wrap').each(function (i, element) {
                var a = $(this).text();
                list_items += "<li>" + a + "</li>";
                console.log(a);
            });
            var html = "<ul>" + list_items + "</ul>"
            res.writeHead(200, {
                'Content-Type': 'text/html'
            });
            res.end(html);
        }
    });
}).listen(8080);
console.log('Server is running at http://178.62.253.206:8080/');