На днях нашёл парсер данного сайта, но к сожаленю он был однопоточный и виндовый.
Решил написать свой, и вот из этого получилось следующее.

Возможности:
[+] Парсинг по заданному диапазону ID
[+] Запись ссылок в лог
[+] Поск указаного слова\фразы в имени файла
[+] Многопоточность
[+] Автоматичесское скачевание файла если в его имени есть искомая часть текста

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#!/usr/bin/perl -X

###
use strict;
use LWP::Simple;
use Getopt::Std;
use threads;
use threads::shared;
###

my %opt=();
getopt("setrlgbp",\%opt);

help() if ($opt{h});
help() if ($opt{s} == undef and $opt{e} == undef);

my $start : shared = $opt{s} || undef;
my $stop    = $opt{e} || undef;
my $threads = $opt{t} || 10;
my $regexp  = $opt{r} || undef;
my $download= $opt{l} || undef;

my $good    = $opt{g} || 'good.txt';
my $bad     = $opt{b} || 'bad.txt';
my $protokol    = $opt{p} || 'log.txt';

chomp($start, $stop, $threads, $good, $bad, $protokol);

print "Wrong param -s ! \n" and exit unless ($start);
print "Wrong param -s ! \n" and exit unless ($start =~ m/\d+/);

print "Wrong param -e ! \n" and exit unless ($stop);
print "Wrong param -e ! \n" and exit unless ($stop =~ m/\d+/);

print "Wrong param -t ! \n" and exit unless ($threads);
print "Wrong param -t ! \n" and exit unless ($threads =~ m/\d+/);
print "Wrong param -t ! \n" and exit unless ($threads > 0);

threads->new(\&main) for 1 .. $threads;
$_->join for threads->list;

sub main {
    while ($start $stop) {
        my $id;
        { # блокировка будет работать только в этом скопе
            lock($start); #залочили
            $id = $start;
            $start++; # меняем
        }
   
        my ($name, $link) = get_inf($id);
        next unless ($link);
        $name = 'Not found' unless ($name);
        my $n = $name;
        if (length($n) 30) {
            my $l =  length($n);
            $l = 30 - $l;
            $n .= ' ' for (0..$l);
        }
        print 'http://upwap.ru/'.$id."\t".substr($n, 0, 20)."\t[".substr($link, 0, 50)."]\n";
   
        if ($regexp) {
            if (index($name, $regexp) != -1) {
                sv($good, 'http://upwap.ru/'.$id."\n");
                if ($download) {
                    my $data = get($link);
                    unless (-d $download) {
                        mkdir $download;
                    }
                    open (F, '> '.$download.'/'.$name);
                    print F $data;
                    close(F);
                   
                    #`wget -P $download $link`;
                }
            } else {
                sv($bad, 'http://upwap.ru/'.$id."\n");
            }
        }
       
        sv($protokol, 'http://upwap.ru/'.$id."\t".$name."\n");
    }
}

sub load {
   
}

sub sv {
    my ($f, $t) = @_;
    open(F, '>> '.$f) or die "Cent write file $f, $!\n";
    print F $t;
    close(F);
}


sub get_inf {
    my $id = shift;
    my $page = get('http://upwap.ru/'.$id);
    #sv('page.html', $page);
    my ($name) = ($page) =~ m#«(.*?)»#;
    my ($link) = ($page) =~ m#(http://mirror\d+\.upwap\.ru/\w+/\d+/\w+/.*?)"#;
   
    return ($name, $link);
}

sub help {
    print "#    Author: SHok
#   Official site: http://nig.org.ua/
#   Licens GPL v3

-s - first id
-e - last id
-t - number of threads (default 10)
-r - search tect in file name
-l - load file to dir
-g - file from good links
-b - file from bad links
-p - log file
"
;
   
    exit;
}

tt twitter big4 Парсер upwap.ru tt digg big4 Парсер upwap.ru tt facebook big4 Парсер upwap.ru tt gmail big4 Парсер upwap.ru tt myspace big4 Парсер upwap.ru tt reddit big4 Парсер upwap.ru

Один комментарий на “Парсер upwap.ru”

Оставить комментарий

CAPTCHA изображение
Обновить изображение
*

RSS-подписка NIG Twitter-подписка NIG

Метки
Друзья
Блог линуксоида Программы для диагностики компьютера
Супер Pixel
Убивалка флешаБэкконект шелл. Часть вторая.Бэкконект шелл. Начало.НАМ для деления чиселПростая арифметикаПередача файлов. Часть третья. Клиент.Dll injectionСканер портовКодировка текста в BMPРухнул на два дняПередача файлов. Часть вторая. Сервер.Поворот и BMPCRC32 суммаBMP форматфайловые вирусыассемблер, строкиАссемблер и матрицапримеры ассемблерМногопоточное программированиеАрхитектура клиент — серверРаздача ICQПишем шуткупишем паукаПривет от ДжеймсаОбход firewallЗагрузка картинок на Gyazo, прямо из ThunarКейлоггер 3Плюшки в контекстном меню Thunarc по сетиКейлоггер 2КейлоггерСкачать Ассемблер!VirusCheckerОтморозки мешают жить ?! Не проблемма !Cкрипты для взлома аккаунтов QIPWinAPI. Работа с файлами. Часть третья. ЧтениеDlink exploitБрут сайта etxt.ruКрасивая раскладка клавиатуры в GnomeМои безделушки на PerlКак запускать Perl скрипты под WindowsБрутфорс партнёрки ZipCoinПарсер upwap.ruИзменения в блогеЧудо ЗаливалкаСкрипт для загрузки файлов на Zalil.ruЯндекс «чоткий» поисковик!WinAPI. Работа с файлами. Часть вторая. ЗаписьWinAPI. Работа с файлами. Часть первая. ПоискПолучение MD5 хеша средствами C++Что нам стоить letitfile.com забрутить?WarCraft III запуск под LinuxЭнтропия файлаWinsock и C++. Мини прокси. Часть |\\/. Завершающая.Перепилил чекер для 4gameЧекер акаунтов YoupornCMailSend v 1.1. Отправка почы без проблемСлучайные числаWinsock и C++. Часть |||. smtp монстр.Брутфорс LetitFile.comИспользование X-Forwarded-For, для обмана веб-сервера, подмена IP подручными средствамиДело было вечером, делать было нечего…Мысли о аудио сервереПарсер ников из твиттераКонец школоло…Perl+Linux. Заметка первая (Удобный Paste bin).Бэкконект шелл.E-MAIL + winsocket + Cpp. Сложно?winsock и C++. Часть ||. Атака клоунов.C++ резолвинг адресаPerl, анализ HTML кода и определение CMSМатематика в C++winsock и C++