2012-03-10 10 views
5

अवलोकनPhantomJS और pjscrape - कुछ एकाधिक यूआरएल

मैं PhantomJS और pjscrape ढांचे के साथ एक बहुत ही बुनियादी स्क्रेपर बनाने के लिए कोशिश कर रहा हूँ पर असफल।

मेरे कोड

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

यूआरएल सरणी के प्रयुक्त

यह पहली सरणी काम नहीं करता है और 3 या 4 यूआरएल के बाद विफल रहता है।

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]; 
} 

यह दूसरी सरणी काम करता है और असफल नहीं करता है, हालांकि यह एक ही साइट से है।

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]; 
} 

समस्या

जब PhantomJS page.open वैकल्पिक कॉलबैक स्वचालित रूप से विफलता मान लिया गया productURLs के माध्यम से पुनरावृत्ति। यहां तक ​​कि जब पृष्ठ लोडिंग समाप्त नहीं हुआ है।

मुझे यह पता है क्योंकि मैंने एक HTTP डीबगर चलाने के दौरान स्क्रिप्ट अप शुरू किया था और फ़ैंटॉमजेएस ने पेज लोड विफलता की रिपोर्ट के बाद भी HTTP अनुरोध अभी भी चल रहा था।

हालांकि, categoriesURLs के साथ चलते समय कोड ठीक काम करता है।

अनुमान

  1. सभी यूआरएल ऊपर सूचीबद्ध वैध
  2. मैं दोनों PhantomJS के नवीनतम संस्करण है और pjscrape

संभव समाधान

ये समाधान कर रहे हैं मैंने अब तक कोशिश की है।

  1. छवि लोड को अक्षम करने page.options.loadImages = false
  2. सेटिंग बड़ा timeoutIntervalpjs.config में यह जाहिरा तौर पर उपयोगी नहीं था के रूप में त्रुटि उत्पन्न एक एक page.open विफलता और नहीं टाइमआउट विफलता की थी।

कोई विचार?

+0

जैसा कि मैंने अभी गिटहब पर ध्यान दिया है, मैं इस मुद्दे को पुन: उत्पन्न नहीं कर सकता - मैं बिना किसी समस्या के 'productUrls' सूची को पुनर्प्राप्त करने में सक्षम था।मुझे नहीं लगता कि यह एक पीजेस्क्रैप समस्या है - यह एक फैंटॉमजेएस मुद्दे की तरह लगता है। – nrabinowitz

उत्तर

2

समस्या फ़ैंटॉमजेएस के कारण हुई थी। अब इसे हल किया गया है।

अब मैं फ़ैंटॉमजेएस v2.0 का उपयोग करता हूं।

+0

कैसे तय किया? आप किस फैंटॉमजे का इस्तेमाल करते थे? (1.6 के साथ एक ही समस्या है और गिट स्रोतों से संकलित नवीनतम संस्करण) –

+0

यह शायद संस्करण 1.8 में हल हो गया है? –

+0

फ़ैंटॉमजेएस से दूर जाकर हल किया गया ..: डी – Hzmy

संबंधित मुद्दे