Кошмар / Электрон: Ошибка навигации (код - 118)
До недавнего времени очистка от кошмара была легкой задачей, я начал сталкиваться с ошибками без подробностей, с заголовком "ошибка навигации" и кодом ошибки 118, как показано ниже.
{ [Error: navigation error]
'0': {сообщение: 'ошибка навигации', код: -118, подробности: '', URL: ' http://markets.ft.com/research/Browse-Companies'}, длина: 1, ошибки: [ {сообщение: 'ошибка навигации', код: -118, подробности: '', URL: ' http://markets.ft.com/research/Browse-Companies'}]}
Мой кошмарный код (Node.Js):
function *run(){
var nightmare = Nightmare({show : true });
nightmare.useragent("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36")
var url = "http://markets.ft.com/research/Browse-Companies";
var industry = [];
//fetching data in { INDUSTRY , LINK , SECTOR } format .
yield nightmare.goto(url).inject('js' , './jquery-2.2.3.min.js').wait('#wsod').evaluate(function () {
var arr = [];
$('.simpleLinkList.wsodModuleContent li').each(function(){
arr.push({SECTOR : $(this).parents('ul').prev().text().replace('Sectors & Industries' , '') ,
INDUSTRY : $(this).text() , LINK : $(this).find('a').attr('href')});
})
return arr;
}).then(function (data) {
industry = data;
});
//using {LINK}
var companies = [];
for(var i = 0 ; i<2; i++)
{
yield nightmare.goto(industry[i].LINK).inject('js' , './jquery-2.2.3.min.js').wait('#wsod');
var nextExists = yield nightmare.visible('.wsod-icon-paging-next-active');
var maxpage = 3;
var currentpage = 1;
var data = []; /* Object({ Name: "" , Link : ""})*/
while(nextExists && currentpage < maxpage)
{
//pagination / checking if next page exists and looping the scraper for each page
yield nightmare.evaluate(function(a , b){
var obj = [];
$('.company-link').each(function () {
obj.push({Sector : a , Industry: b , Name: $(this).text() , Link: $(this).attr('href')});
});
return obj;
},industry[i].SECTOR , industry[i].INDUSTRY).then(function (obj) {
data.push(obj);
});
yield nightmare.click('.wsod-icon-paging-next-active').wait(2000);
currentpage++;
nextExists = yield nightmare.visible('.wsod-icon-paging-next-active');
}
//data is an array of arrays and needs to be flattened.
var x = [].concat.apply([] , data);
//now pushing data to companies list (entire container)
companies.push(x);
}
companies = [].concat().apply([], companies);
//now companies is an array of entire list of all companies in every single sector->industry with sector name included for ease
console.log(companies);*/
console.log(companies);
yield nightmare.end();
}
Если бы кто-нибудь мог предоставить больше информации об этой ошибке, было бы здорово. Программа работает несколько раз, но в большинстве случаев я получаю "Ошибка навигации"
1 ответ
Хорошо, после некоторых исследований хрома, который питает электрон + кошмар.
Код ошибки -118 относится к тайм-ауту, однако эта проблема появляется на веб-сайтах, которые мгновенно загружаются в реальном браузере хрома.
Похоже, электронная ошибка на данный момент, если кто-то знает больше, пожалуйста, предоставьте детали.