Question

Vue d'ensemble

Je suis en train de créer une base très grattoir avec PhantomJS et pjscrape cadre.

Mon Code

pjs.config({
timeoutInterval: 6000,
timeoutLimit: 10000,
format: 'csv',
csvFields: ['productTitle','price'],
writer: 'file',
outFile: 'D:\\prod_details.csv'
});

pjs.addSuite({
title: 'ChainReactionCycles Scraper',
url: productURLs, //This is an array of URLs, two example are defined below
scrapers: [
    function() {
        var results [];
        var linkTitle = _pjs.getText('#ModelsDisplayStyle4_LblTitle');
        var linkPrice = _pjs.getText('#ModelsDisplayStyle4_LblMinPrice');
        results.push([linkTitle[0],linkPrice[0]]); 
        return results;
    }
]
});

URL de la Matrice Utilisée

Ce premier tableau NE FONCTIONNE PAS et échoue au bout de la 3ème ou de la 4ème URL.

var productURLs = ["8649","17374","7327","7325","14892","8650","8651","14893","18090","51318"];
for(var i=0;i<productURLs.length;++i){
  productURLs[i] = 'http://www.chainreactioncycles.com/Models.aspx?ModelID=' + productURLs[i];
}

Ce deuxième tableau FONCTIONNE et ne manque pas, même si c'est à partir du même site.

var categoriesURLs = ["304","2420","965","518","514","1667","521","1302","1138","510"];
for(var i=0;i<categoriesURLs.length;++i){
  categoriesURLs[i] = 'http://www.chainreactioncycles.com/Categories.aspx?CategoryID=' + categoriesURLs[i];
}

Problème

Lors d'une itération à travers productURLs le PhantomJS page.open option de rappel suppose automatiquement l'échec.Même lorsque la page n'a pas fini de se charger.

Je sais ce que j'ai commencé le script lors de l'exécution d'un débogueur HTTP et la requête HTTP, étaient toujours en cours d'exécution, même après PhantomJS avait signalé un un chargement de la page l'échec.

Toutefois, le code fonctionne très bien lors de l'exécution avec categoriesURLs.

Hypothèses

  1. Toutes les URL répertoriées ci-dessus sont VALABLES
  2. J'ai les dernières versions de PhantomJS et pjscrape

Solutions Possibles

Ce sont des solutions que j'ai essayé jusqu'à présent.

  1. La désactivation de chargement de l'image page.options.loadImages = false
  2. Les paramètres d'une plus grande timeoutInterval dans pjs.config ce n'était pas utile, apparemment, que l'erreur générée est d'une page.open l'échec et PAS un échec de délai d'attente.

Des idées?

Était-ce utile?

La solution

Le problème a été causé par PhantomJS.Cela a maintenant été résolu.

Je vais maintenant utiliser PhantomJS v2.0.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top