08bab425f3434637e7f66c0b4a92e9e1 Парсер ников из твиттера

И так, написал я парсер ников из твиттера.

Для чего его применить ?
Думайте сами =)

UPDATE:
Обновил скрипт, допилил сохранение точки парсинга.
Если быть точным то скрипт сохраняет список ников по которым ведёт парсин, каждый раз когда список ников пополняется.

Тоесть, допустим что вы указали скрипту что нужо держать в буфере не меньше 20 пользователей.
Скрипт запилевает в буфер 20 пользователей, после достаёт от туда один ник.
Буфер становится на одного пользователя меньше.
При обработке следующего пользователя, в буфер будет положено ещё 20 ников, так как там стало меньше 20 ников, и кода это произойдёт скрипт запишет список поьзователей которые лежат в буфере.
Соответственно, если скрипт вдоруг прекратит работу внезапно, то список из буфера будет записан. И когда вы во второй раз запустите скрипт, он считает список, и начнёт парсить пользователей которые на тот момент лежали в буфере.

Сам код:

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
#!/usr/bin/perl

# Author SHok
# Official site http://nig.org.ua
# License GPL v.3

###
use strict;
use warnings;
use LWP::Simple;
use constant DEBAG => 1;
###

##
# Список юзеров с которых следует начать
my @users = qw /OpenGov/;

# Список ников которые держатся в памяти (на случа если вдруг у пользователя нет фаловеров)
my $cash = 5;

# Ностройки задержек (анти бан)
my $paus_time = 5; # Время задержкив секундах
my $paus = 7;      # Количество запросов подряд без задержки

# Настройки реконнектов
my $max_rc = 5; # Максимальное количество реконнектов
my $time_rc = 10; # Время задержки до следующего коннекта после обрыва соединения
##

###
my @log;
my $pp=$paus;
redst();
open(LOG, '>> niks.txt') or die "# Cen't open file nicks.txt [$!]\n";
###

sub get_users {
    my $nik = shift;
    my $array = shift;
   
    if ($paus 0) {
        sleep($paus_time);
        $paus=$pp;
    }
   
    R: my $page = get('http://twitter.com/#!/'.$nik.'/followers') or bad_connect();
    $max_rc = 5;
    @$array=undef;
    @$array = ($page) =~ /;
    S:
}

sub bad_connect {
    print "# Cen't connet, goto reconneting...\n# \$max_rc = $max_rc\n"   if (DEBAG);
    if ($max_rc) {
        print "# \$max_rc--\n"   if (DEBAG);
        $max_rc--;
        print "# Sleep $time_rc seconds...\n"   if (DEBAG);
        sleep($time_rc);
        print "# Go to R...\n"   if (DEBAG);
        goto R;
    } else {
        print "# Cen't connecting, go to end of function get_users...\n"   if (DEBAG);
        goto S;
    }    
}

sub redst {
    print "# Check log ...\n" if (DEBAG);
    open(ST, 'now.log') or goto E;
    chomp(my @array = );
    close(ST);
   
    if (scalar(@array) => 1) {
        print "# Log have a niks ...\n" if (DEBAG);
        @users = @array;
    }
    E:
}

print "# Start parsing ...\n";
while (@users) {
    # parsing users
    my $user = shift(@users);
    print "# Shifted [ $user ] ...\n" if (DEBAG);
    get_users($user,\@log);
    print "# Get the ".scalar(@log)." niks in profil [ $user ] ...\n"  if (DEBAG);
    # push to cash
    if (scalar(@users) $cash) {
        print "# \@users \n"
if (DEBAG);
        for (0..$cash){
            if(scalar(@log) => 1){
                push (@users,shift(@log));
            } else {
                last;
            }
        }
        print "# Pushed $cash niks to \@users ...\n# \@users = ".scalar(@users)." ...\n" if (DEBAG);
        print "# Save log ...\n" if (DEBAG);
        open(ST, '> now.log') or goto N;
        print ST join("\n",@users)."\n";
        close(ST);
        N:
    }
    # print all nik's to log
    print LOG $user."\n".join("\n",@log)."\n";
    print "# Parsed niks from user [ ".$user." ]\n";
}
print "# Finish ...\n";
close(LOG);

PS ну а за это не читабельное подобие английского прошу извинить icon biggrin Парсер ников из твиттера

tt twitter big4 Парсер ников из твиттера tt digg big4 Парсер ников из твиттера tt facebook big4 Парсер ников из твиттера tt gmail big4 Парсер ников из твиттера tt myspace big4 Парсер ников из твиттера tt reddit big4 Парсер ников из твиттера

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

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

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

Метки
Супер Pixel