Задать вопрос
@AbstMo

Помощь с crawler'ом на phantomJs?

Приветствую тех кто откликнулся на мою проблему.
Требуется crawler который берет URL и следуя перенаправлениям и возвращает последний URL в цепь перенаправлений.
Но код не работает. Что с ним не так?
var sys = require('system')
var page;
var myurl=( sys.args[1] ) ? sys.args[1] : phantom.exit(0);
var urls = [];

var renderPage = function (url) {
    page = require('webpage').create();
    page.settings.userAgent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36$'
	page.settings.loadImages = false;

    page.onNavigationRequested = function(url, type, willNavigate, main) {
        if (main && url!=myurl) {
            myurl = url;
            urls.push(url);
            page.close();
            renderPage(url);
        }
    };

    page.open(url, function(status) {
    	console.log(page.content);
    	phantom.exit(0);
        if (status==="success") {
            var newUrl = page.evaluate(function() {
			  	var canonical = [].map.call(document.querySelectorAll('link[rel="canonical"]'), function(link) {
			        return link.getAttribute('href');
			    }).shift();

			    if (!location.origin) location.origin = location.protocol + "//" + location.host;
			       	
				var out = location.origin;
			       	
			   	if(typeof canonical != 'undefined'){
			   		if(canonical.substring(0,1) == "/"){
						out += canonical;
			   		} else {
						out = canonical;
					}
		        } else {
		            out = "{{home}}" + out;
		        }

			  	return out;
			  
			});
			console.log(newUrl);
            phantom.exit(0);
        } else {
            phantom.exit(1);
        }
    });
} 

renderPage(myurl);

//setTimeout(function(){
//	var txt = document.createElement("textarea");
//    txt.innerHTML = page.content;
//    console.log(txt.value);
//    phantom.exit(0);
//	var newUrl = page.evaluate(function() {
//	  	var canonical = [].map.call(document.querySelectorAll('link[rel="canonical"]'), function(link) {
//	        return link.getAttribute('href');
//	    }).shift();
//
//	    if (!location.origin) location.origin = location.protocol + "//" + location.host;
//	       	
//		var out = location.origin;
//	       	
//	   	if(typeof canonical != 'undefined'){
//	   		if(canonical.substring(0,1) == "/"){
//				out += canonical;
//	   		} else {
//				out = canonical;
//			}
//        } else {
//            out = "{{home}}" + out;
//        }
//
//	  	return out;
//	  
//	});
//	console.log(newUrl);
//    phantom.exit(0);
//},5000);
  • Вопрос задан
  • 273 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽