PhantomJS et pjscrape - à Défaut sur certains plusieurs Url
-
10-12-2019 - |
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
- Toutes les URL répertoriées ci-dessus sont VALABLES
- J'ai les dernières versions de PhantomJS et pjscrape
Solutions Possibles
Ce sont des solutions que j'ai essayé jusqu'à présent.
- La désactivation de chargement de l'image
page.options.loadImages = false
- Les paramètres d'une plus grande
timeoutInterval
danspjs.config
ce n'était pas utile, apparemment, que l'erreur générée est d'unepage.open
l'échec et PAS un échec de délai d'attente.
Des idées?
La solution
Le problème a été causé par PhantomJS.Cela a maintenant été résolu.
Je vais maintenant utiliser PhantomJS v2.0.