簡體   English   中英

嘗試在localhost:3000上使用Express運行腳本

[英]Trying to run a script with Express on localhost:3000

堅持第一次嘗試基本應用程序。 當在控制台中單獨運行時,Scraper.js會刮擦一個URL並將返回的數組寫到文檔obj中,以便該部分起作用。 現在,我需要的是Express服務器,只要我打開localhost: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
        } 
 });

您需要使用module.exports = functionName()作為module.exports = functionName()的最后一行來導出scraperjs函數。

require在index.js需要在scraper.js的路徑位置因素。 所以:

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

這是我用promise編碼的代碼,還使用了daNews全局變量

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM