簡體   English   中英

使用Request(Node.js)循環瀏覽多個URL

[英]Loop through multiple urls with Request (Node.js)

我目前有一個app.get()方法,該方法使用request和cheerio從iTunes評論中提取html。

// get all reviews
app.get('/api/reviews', function(req, res) {
  var options = {
    url: 'https://itunes.apple.com/WebObjects/MZStore.woa/wa/customerReviews',
    qs: {
     'displayable-kind': '11',
     'id': 'XXXXXXXXX',
     'page': i,
     'sort': '4'
    },
    headers: {
      'User-Agent': 'iTunes/10.3.1 (Macintosh; Intel Mac OS X 10.6.8) AppleWebKit/533.21.1',
      'X-Apple-Store-Front': '143441-1,12',
      'X-Apple-Tz': '-18000',
      'Accept-Language': 'en-us, en;q=0.50',
    }
  } 

  request(options, function(error, response, html) {
    // load html, parse, do work, etc.
    // res.send(results);
  }     
};

我想使用“ page”查詢作為如下變量來遍歷此url調用。 我收到“錯誤:發送標頭后無法設置標頭”。 這樣嘗試時出錯。 如何更改標題並進行另一個url調用?

app.get('/api/reviews', function(req, res) {
  for(var i = 0; i < 4; i++) {
    var options = {
      url: 'https://itunes.apple.com/WebObjects/MZStore.woa/wa/customerReviews',
      qs: {
       'displayable-kind': '11',
       'id': 'XXXXXXXXX',
       'page': '1',
       'sort': '4'
      },
      headers: {
        'User-Agent': 'iTunes/10.3.1 (Macintosh; Intel Mac OS X 10.6.8) AppleWebKit/533.21.1',
        'X-Apple-Store-Front': '143441-1,12',
        'X-Apple-Tz': '-18000',
        'Accept-Language': 'en-us, en;q=0.50',
      }
    } 

    request(options, function(error, response, html) {
      // load html, parse, do work, etc.
    }
  }     
};

您遇到的問題是您試圖分塊發送結果頁面,該頁面不起作用。 您可以通過收集所有request結果,然后將所需的任何數據發送回客戶端來解決此問題。

這是使用async進行此操作的示例:

var async = require('async');

app.get('/api/reviews', function(req, res) {
  async.times(4, function(i, cb) {
      var options = {
        url: 'https://itunes.apple.com/WebObjects/MZStore.woa/wa/customerReviews',
        qs: {
         'displayable-kind': '11',
         'id': 'XXXXXXXXX',
         'page': i,
         'sort': '4'
        },
        headers: {
          'User-Agent': 'iTunes/10.3.1 (Macintosh; Intel Mac OS X 10.6.8) AppleWebKit/533.21.1',
          'X-Apple-Store-Front': '143441-1,12',
          'X-Apple-Tz': '-18000',
          'Accept-Language': 'en-us, en;q=0.50',
        }
      } 
      request(options, function(error, response, html) {
        // load html, parse, do work, etc.
        // var result = ...;
        cb(null, result);
      });
  }, function(err, results) {
    // completed processing of all items
    // array of `request` results are stored in results
    // send data to client here
  });
});

暫無
暫無

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

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