2012-03-10 24 views
5

Tổng quanPhantomJS và pjscrape - Không trên một số nhiều URL

tôi đang cố gắng để tạo ra một scraper rất cơ bản với PhantomJS và khung pjscrape.

Mã My

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 Avatar của sử dụng

mảng đầu tiên này KHÔNG LÀM VIỆC và thất bại sau 3 hoặc 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]; 
} 

mảng này thứ hai TRÌNH và không thất bại, mặc dù nó là từ cùng một trang web.

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

Vấn đề

Khi iterating qua productURLs các PhantomJS page.open gọi lại tùy chọn tự động giả thất bại. Ngay cả khi trang chưa tải xong.

Tôi biết điều này khi tôi bắt đầu tập lệnh trong khi chạy trình gỡ rối HTTP và yêu cầu HTTP vẫn chạy ngay cả sau khi PhantomJS báo cáo lỗi trang lỗi.

Tuy nhiên, mã hoạt động tốt khi chạy với categoriesURLs.

Giả

  1. Tất cả của URL được liệt kê ở trên là HỢP LỆ
  2. Tôi có phiên bản mới nhất của cả hai PhantomJS và pjscrape

Giải pháp có thể

Đây là những giải pháp Tôi đã cố gắng cho đến nay.

  1. Vô hiệu hóa tải hình ảnh page.options.loadImages = false
  2. Cài đặt một lớn hơn timeoutInterval trong pjs.config này là không hữu ích rõ ràng như các lỗi phát sinh là một thất bại page.open và KHÔNG phải là một thất bại thời gian chờ.

Bất kỳ ý tưởng nào?

+0

Như tôi vừa lưu ý trên GitHub, tôi không thể tạo lại vấn đề - tôi có thể truy xuất danh sách 'productUrls' mà không gặp sự cố.Tôi không nghĩ rằng đó là một vấn đề Pjscrape - nó giống như một vấn đề về PhantomJS. – nrabinowitz

Trả lời

2

Sự cố là do PhantomJS gây ra. Điều này hiện đã được giải quyết.

Tôi hiện đang sử dụng PhantomJS phiên bản 2.0.

+0

Đã sửa lỗi như thế nào? Phiên bản PhantomJ nào bạn đã sử dụng? (Có cùng một vấn đề với 1.6 và phiên bản mới nhất được biên dịch từ các nguồn git) –

+0

điều này có thể được giải quyết trong phiên bản 1.8? –

+0

được giải quyết bằng cách di chuyển khỏi PhantomJS ..: D – Hzmy

Các vấn đề liên quan