предлагаю скрипт для проверки траста в гугле

Тема в разделе "Сервисы", создана пользователем durman, 8 окт 2008.

Статус темы:
Закрыта.
  1. durman

    durman Постоялец

    Регистр.:
    18 фев 2008
    Сообщения:
    87
    Симпатии:
    8
    Предлагая вашему вниманию не большой скрипт на перле, который позволит замерить trustrank для конкретного хостинга по алгоритму впервые опубликованным АлексомФ (http://alexf.name/2007-11-23/uluchshennyj-trastrank/), конечно с некоторыми усовершенствованиями.

    В начале файла 2 главные переменные:
    my $query_count = 100; - кол-во titloв для данного хоста, по которым ищем позиции
    my $query_deep = 100; - сколько результатов просматривать.

    Если у вам жалко трафа ставьте оба параметра на 10, но самые точные результаты на 100.

    Результат работы выглядит примерно так
    domin: blogs.mail.ru
    position: 10 – средняя позиция домена по произведённым запросам
    of result count: 4717 – среднее кол-во страниц в индексе по произведённым запросам
    based on iterations: 39/99 = 39% - было проведено 99 (обычно 100) запросов, в 39 обнаружился blogs.mail.ru. (параметры «position» и «position» усреднялись только по 39 значениям)

    Судить о бонусности надо на основании этих трёх параметров и они никоим образом не могут быть сведены в одну цифру. Физический смысл параметров :
    1) Position – позиция в серпе – чем меньше тем лучше
    2) of result count – обратная оценка погрешности первого параметра, чем она больше тем точнее Position
    3) based on iterations – обратная оценка второго параметра, чем она больше тем точнее (2) и соответственно (1)

    Скрипт по возможности пытается удалить из заголовков название проверяемого домена.

    Скрипту на вход (параметром) можно подавать имя хоста либо имя файла в котором перечислены хосты. Результаты выводятся на экран, так что можно перенаправлять в любой файл.
    Скрипт не работает с соксами и не предназначен для промышленных масштабов. Если вы чекаете несколько хостов то между кадым задержка в 6 минут что б гугл не забанил.

    Зы.: кто уже имеет подобный скрипт не флудите в теме, это для тех кто не имеет.

    Добавлено через 37 секунд
    Код:
    #!/usr/bin/perl -w
    
    use LWP::UserAgent;
    use LWP::ConnCache;
    use strict;
    use Encode;
    use HTML::Entities;
    
    my $query_count = 100; # from 10 to 100
    my $query_deep = 100; # from 10 to 100
     
    $| = 1; 
    my $file = $ARGV[0];
    my @arr_dom;
    if (open FH, $file){
    	@arr_dom = <FH>;
    	close FH;
    } else {
    	push @arr_dom,$file;
    }
    	
    foreach (@arr_dom) {
    	s/\s*$//s;
    	s/^\s*(\.)?//s;
    	my $domain = $_;
    	next if ($domain eq '');
    	
    	my ($domain2) = $domain =~ /(\w+.\w+)$/si;
    	my ($domain1) = $domain =~ /(\w+).\w+$/si;
    	
    	eval {
    		my $b_fp = LWP::UserAgent->new(
    			agent => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.15'
    		);
    		my $b_response = $b_fp->get("http://www.google.com/search?q=site:$domain&num=$query_count");
    		
    		
    		my @keywords = $b_response->content =~ /class=l.*?\)">(.+?)<\/a><\/h3>/sg;
    		
    		my $suc_cnt = 0;
    		my $pos = 0;
    		my $res_cnt = 0;
    		my $ves = 0;
    		foreach my $kwd (@keywords) {
    			
    				sleep 1;
    				$kwd =~ s/<b>...<\/b>//sg;
    				$kwd =~ s/<\/b>//sg;
    				$kwd =~ s/<b>//sg;
    				$kwd =~ s/$domain2//sg;
    				$kwd =~ s/$domain1//sg;
    				decode_entities($kwd);
    			
    				my $response;
    				eval {			
    					my $fp = LWP::UserAgent->new(
    						agent => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.15',
    						conn_cache => LWP::ConnCache->new()
    					);
    					$response = $fp->get("http://www.google.com/search?hl=ru&num=$query_deep&q=$kwd");
    				};
    				if ($@) {
    					print "error: $@\n";
    				}
    				
    				my @links = $response->content =~ /href="http:\/\/(?:www\.)?(?:\w*?\.)?((?:\w+\.)*?\w+\.\w+)\/\S* class=l/sg;
    				my ($cnt) = $response->content =~ /<b>1<\/b> - <b>\d+<\/b>.*?<b>(\d+.*?)<\/b>.*?\(<b/sg;
    				if (!defined($cnt)){
    					$ves++;
    					next;
    				}
    				my @cnts = $cnt =~ /(\d+)/sg;
    				$cnt = join ('',@cnts);
    				
    				my $is_top = 0;
    				for (my $i=0; $i<scalar(@links); $i++) {
    					if ($domain eq $links[$i]) {
    						Encode::from_to($kwd, 'utf-8','windows-1251');
    						$suc_cnt++;
    						$pos += $i;
    						$res_cnt += $cnt;
    						
    						$is_top = 1;
    						last;
    					}
    				}
    				
    				if (!$is_top) {
    					Encode::from_to($kwd, 'utf-8','windows-1251');
    				}
    			
    		}
    		
    		print "\ndomin: $domain \n";
    		if ($suc_cnt) {
    			print "position: ".int($pos/$suc_cnt)."\n";
    			print "of result count: ".int($res_cnt/$suc_cnt)."\n";
    			print "based on iterations: ".($suc_cnt)."/".(scalar(@keywords)-$ves)." = ".int((100*$suc_cnt)/(scalar(@keywords)-$ves))."%\n";
    		} else {
    			print "no position found. domain is banned!!\n";
    		}
    	};
    	
    	if ($@) {
    		print $@;
    	}
    	
    	if (scalar(@arr_dom) > 1) {
    		sleep 300;
    	}
    }
    
    
    
     
    BFox нравится это.
  2. Лариса

    Лариса Читатель

    Заблокирован
    Регистр.:
    21 сен 2007
    Сообщения:
    390
    Симпатии:
    128
    Задавала вопрос о методике числовой оценки траста гугля для своего скрипта (массовая оценка доменов по многим параметрам).
    Не нашла ответа.
    И эта не нравится.
    Есть ли другие подходы?
     
  3. lipsko

    lipsko Постоялец

    Регистр.:
    2 янв 2008
    Сообщения:
    81
    Симпатии:
    13
    получил ошибку 500.
    надо скрипт поправить может?
     
  4. freak.zp

    freak.zp Создатель

    Регистр.:
    31 мар 2009
    Сообщения:
    37
    Симпатии:
    1
    да неактуально уже, к сожалению...
    7 месяцев прошло. а жаль.
    пробовал поправить - неосилил, т.к. в перле не силён.
     
Статус темы:
Закрыта.