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ả
- Tất cả của URL được liệt kê ở trên là HỢP LỆ
- 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.
- Vô hiệu hóa tải hình ảnh
page.options.loadImages = false
- Cài đặt một lớn hơn
timeoutInterval
trongpjs.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ạipage.open
và KHÔNG phải là một thất bại thời gian chờ.
Bất kỳ ý tưởng nào?
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