2017-09-01 13 views
1

Stuck auf meinem ersten Versuch eine grundlegende App. Scraper.js scrappt eine URL und schreibt das zurückgegebene Array in das Dokument obj, wenn es alleine in der Konsole ausgeführt wird, damit dieser Teil funktioniert. Jetzt will ich nur noch einen Express-Server, um das Skript auszuführen, wenn ich localhost: 3000 öffne, aber nicht sicher, wie das geht.Versuch, ein Skript mit Express auf localhost zu starten: 3000

|node_modules 
|package.json 
|public 
|-index.html (boilerplate HTML. Not importing anything) 
|src 
|-scraper.js 
|index.js 

index.js:

var scraperjs = require('scraperjs'); 
var express = require('express'); 
var app = express() 

app.use(express.static(__dirname + '/public')); 
app.listen(3000); 

-

scraper.js:

scraperjs.StaticScraper.create('https://examplesite.com/') 
    .scrape(function($) { 
     return $(".entry-content p").map(function() { 
       var content = $(this).html(); 
       return content 
      } 
     }).get(); 
    }) 
    .then(function(data) { 
     ... // eventually will write the items returned from the data array to div's 
     } 
}); 
+0

Wenn Sie nur Vanille JS verwenden, können Sie ein window.onload Ereignis hinzufügen und holen Sie die Schnellstraße zu erreichen. –

Antwort

0

Sie müssen die Funktion scraperjs mit module.exports = functionName() als letzte Zeile in scraper.js exportieren.

Ihr require in index.js muss die Pfadposition für scraper.js berücksichtigen. Also:

var scraperjs = require('./src/scraperjs');

0

Hier ist eine, die ich mit dem Versprechen codiert haben, und auch mit eine globale Variable, die daNews

ist 0
var scraperjs = require('scraperjs'); 
var express = require('express'); 
var app = express(); 

app.use(express.static(__dirname + '/public')); 

var url = 'https://news.ycombinator.com/'; 
var daNews; 

function myScraper(){ 
    return new Promise((resolve, reject) => { 
    scraperjs.StaticScraper.create(url) 
     .scrape(function($) { 
      return $(".title a").map(function() { 
       return $(this).text(); 
      }).get(); 
     }) 
     .then(function(news) { 
      daNews = news; 
      resolve('done'); 
     }) 
    }); 
} 

app.get('/', function(req, res){ 

    async function m1(){ 
    var x = await myScraper(); 
    if(x == 'done'){ 
     res.send(daNews); 
    }else{ 
     console.log('err'); 
    } 
    } 

    m1(); 

}) 

app.listen(3000); 
+0

kommentieren Sie, warum Sie nicht mögen! – turmuka

Verwandte Themen