PrzeglądPhantomJS i pjscrape - w przypadku braku na pewnych wielu adresów URL
Staram się stworzyć bardzo prosty skrobak z PhantomJS i ramy pjscrape.
mój kod
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 Array używany
Ta pierwsza tablica NIE DZIAŁA a nie po 3 lub 4 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];
}
Ta druga tablica WORKS i nie zawodzą, mimo że jest z tego samego miejsca.
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];
}
Problem
Kiedy iteracja productURLs
się PhantomJS page.open
opcja zwrotna automatycznie zakłada awarię. Nawet jeśli strona nie zakończyła ładowania.
Wiem o tym, gdy uruchomiłem skrypt podczas uruchamiania debuggera HTTP, a żądanie HTTP nadal działało, nawet po tym, jak PhantomJS zgłosiło awarię ładowania strony niepowodzenie.
Jednak kod działa poprawnie, gdy działa pod numerem categoriesURLs
.
Założenia
- Wszystkie URL wymienione powyżej są ważne
- Mam najnowsze wersje obu PhantomJS i pjscrape
możliwych rozwiązań
Są to rozwiązania Próbowałem do tej pory.
- Wyłączenie obrazu załadunku
page.options.loadImages = false
- Ustawienia większy
timeoutInterval
wpjs.config
to nie była przydatna widocznie jako wygenerowany błąd był zpage.open
awarii i nie uszkodzenie limitu czasu.
Jakieś pomysły?
Jak już zauważyłem na GitHub, nie mogę odtworzyć problemu - udało mi się pobrać listę 'productUrls' bez problemu.Nie sądzę, żeby to był problem Pjscrape - to brzmi jak problem PhantomJS. – nrabinowitz