簡體   English   中英

PhantomJS和pjscrape - 在多個URL上失敗

[英]PhantomJS and pjscrape - Failing on some multiple URLs

概觀

我正在嘗試用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;
    }
]
});

URL數組已使用

這第一陣列不工作 ,第三或第四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];
}

這第二個陣列的作品和並沒有失敗,即使是來自同一站點。

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

問題

迭代productURLs ,PhantomJS page.open可選回調會自動假定失敗 即使頁面還沒有完成加載。

我知道這一點,因為我在運行HTTP調試器時啟動了腳本,即使PhantomJS報告了頁面加載失敗 ,HTTP請求仍在運行。

但是,使用categoriesURLs時,代碼工作正常。

假設

  1. 上面列出的所有網址都是有效的
  2. 我有PhantomJS和pjscrape的最新版本

可能的解決方案

這些是我迄今為止嘗試過的解決方案。

  1. 禁用圖像加載page.options.loadImages = false
  2. 設置較大的timeoutIntervalpjs.config這不是顯然是所產生的誤差是有用的一個page.open失敗和NOT超時故障。

有任何想法嗎?

問題是由PhantomJS引起的。 這已經解決了。

我現在使用PhantomJS v2.0。

暫無
暫無

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

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