С помощью чего можно получить список страниц в яндексе

123
fima32
На сайте с 12.01.2006
Offline
132
#11

Stalker-g2, может поподробнее расскажите как Ваш скрипт настраивается, а то у меня ничего не получилось

SG
На сайте с 21.01.2007
Offline
96
#12

ну... нужна перловая библиотека LWP::Simple;

В активперл для винды вроде как по умолчанию стоит.

Файл sitemap.txt ожидает в формате

<a href="http://www.archvestnik.ru/ru/news/991/"></a>

<a href="http://www.archvestnik.ru/ru/news/990/"></a>

Если спросто список урлов

http://www.archvestnik.ru/ru/news/991/

http://www.archvestnik.ru/ru/news/990/

Надо закомментить

$_ =~ /href=\"(.*)\"/;

а дальше

cmd

cd c:\crawler

crawler.pl

И смотрим.

fima32
На сайте с 12.01.2006
Offline
132
#13

Спасибо огромное, заработало.Только в варианте когда ссылки в формате <a href="http://www.archvestnik.ru/ru/news/991/"></a> работает

А вот когда ссылки http://www.archvestnik.ru/ru/news/991/ скрипт не работает, может $_ =~ /href=\"(.*)\"/; недостаточно закомментировать? может надо еще что-то поправить?

В принципе этого уже достаточно, чтобы облегчить себе труд

З.Ы. Насколько я знаю комментировать строку в Перле нужно добавлением символа # в начале строки

SG
На сайте с 21.01.2007
Offline
96
#14
fima32:

А вот когда ссылки http://www.archvestnik.ru/ru/news/991/ скрипт не работает, может $_ =~ /href=\"(.*)\"/; недостаточно закомментировать? может надо еще что-то поправить?
В принципе этого уже достаточно, чтобы облегчить себе труд
З.Ы. Насколько я знаю комментировать строку в Перле нужно добавлением символа # в начале строки

мда, фичу эту непродумал. оказывается для яши для страниц типа http://www.archvestnik.ru/ru/news/991/ надо спрашивать про страницу http://www.archvestnik.ru/ru/news/991

Чуток переделал скрипт с учётом этого недостатка, а ещё и чтобы файлы лога, индекса и неиндекса обнулял при запуске каждом.

Кроме того, в файл log.txt теперь пишутся запросы к яндексу. В целях дебаггинга.


use strict;
use LWP::Simple;

open SITEMAPIND, ">c:\\Crawler\\sitemap.noind.txt";
close SITEMAPIND;
open SITEMAPNOIND, ">c:\\Crawler\\sitemap.noind.txt";
close SITEMAPNOIND;
open MYLOG, ">c:\\Crawler\\log.txt";
close MYLOG;

open SITEMAP, "<c:\\Crawler\\sitemap.txt";

my @url_list;
my $url;

while(<SITEMAP>) {
chomp;

#$_ =~ /href=\"(.*)\"/;
$url = $_;

# %2F = /
# %3F = ?
# %3D = =
# %26 = &

while($url =~ s/http:\/\///) {};
while($url =~ s/\//\%2F/) {};
while($url =~ s/\?/\%3F/) {};
while($url =~ s/=/\%3D/) {};
while($url =~ s/\&/\%26/) {};
while($url =~ s/ //) {};

push @url_list, $url;
}

while($url = pop @url_list) {
my $link;
my $url_slash;
my $url_slash_no_www;

my $url_no_www = $url;
$url_no_www =~ s/www\.//;

if($url =~ /\%2F$/) {
$url =~ /(.*)\%2F$/;
$url_slash = $1;
$url_slash_no_www = $url_slash;
$url_slash_no_www =~ s/www\.//;
$link = "http://www.yandex.ru/yandsearch?rpt=rad&text=url%3D%22$url%22+%7C+url%3D%22$url_slash%22+%7C+url%3D%22$url_no_www%22+%7C+url%3D%22$url_slash_no_www%22";
}
else {
$link = "http://www.yandex.ru/yandsearch?rpt=rad&text=url%3D%22$url%22+%7C+url%3D%22$url_no_www%22";

}

open MYLOG, ">>c:\\Crawler\\log.txt";
print MYLOG "$link\n";
close MYLOG;

my $content = get $link;

if($content =~ /Сохраненная копия/) {
while($url =~ s/\%2F/\//) {};
while($url =~ s/\%3F/\?/) {};
while($url =~ s/\%3D/\=/) {};
while($url =~ s/\%26/\&/) {};

open SITEMAPIND, ">>c:\\Crawler\\sitemap.ind.txt";
print SITEMAPIND "http://$url\n";
close SITEMAPIND;
print "\nIND: $url\n";
}
else {
while($url =~ s/\%2F/\//) {};
while($url =~ s/\%3F/\?/) {};
while($url =~ s/\%3D/\=/) {};
while($url =~ s/\%26/\&/) {};

open SITEMAPNOIND, ">>c:\\Crawler\\sitemap.noind.txt";
print SITEMAPNOIND "http://$url\n";
close SITEMAPNOIND;

print "\nNOIND: $url\n";
}
sleep 1;
}

На код чур не ругаться. Я не профи :)

fima32
На сайте с 12.01.2006
Offline
132
#15

Последний вариант скрипта формирует запросы вида

url="www.archvestnik.ru/ru/news/991/" | url="www.archvestnik.ru/ru/news/991"

но иногда страницы индексируются без www, как бы еще этот вариант предусмотреть?

SG
На сайте с 21.01.2007
Offline
96
#16
fima32:
Последний вариант скрипта формирует запросы вида
url="www.archvestnik.ru/ru/news/991/" | url="www.archvestnik.ru/ru/news/991"
но иногда страницы индексируются без www, как бы еще этот вариант предусмотреть?

подправил в последнем варианте это...

но за рамки моего скрипта этого уже выходит :)

потому как мой скрипт - всего лишь придаток к скрипту составления карты сайта.

а зачем нужны все эти извращения-все и так понимают☝

fima32
На сайте с 12.01.2006
Offline
132
#17

Просто в скрипте вот что получается:

если урл типа: http://www.site.ru/page1/

то создается запрос вида: url="www.site.ru/page1/" | url="www.site.ru/page1"

Формировать в первом запросе урл со слешом в конце не обязательно, лучше вместо него формировать запрос типа: url="www.site.ru/page1" | url="site.ru/page1"

SG
На сайте с 21.01.2007
Offline
96
#18

ну дык это и не коммерческий продукт олл ин ван :)

хошь убрать слэш убери. а так-файлик заданного формата парсит, проиндексированные от непроиндексированных отделяет.

что ещё вёбмастеру для счастья надо :)

fima32
На сайте с 12.01.2006
Offline
132
#19

Слеш убрать не проблема, я не знаю как в формировании запроса убрать www во второй части запроса (в регулярках и Перл не силен)

SG
На сайте с 21.01.2007
Offline
96
#20

так глянь последний сурс-там убрано ввв. я обновил исходник.

123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий