Усердие все превозмогает
Jan. 10th, 2012 02:37 pmТолько было дал себе зарок забросить perl на неопределенный срок, как понял, что могу залезть на еще один сайт и качнуть оттуда данных. Одновременно на меня снизошло просветление -- замена и поиск наконец-то начали работать (возможно, помогли комментарии к предыдущей записи, а возможно какие-то тонкие флюиды просочились из заклинания, сотворенного
ishc). Мой новый робот получился еще страшнее предыдущего. Он сорит файлами (50 МБ мусора на несколько сот килобайт полезной информации), чихает, кашляет, но работает, экстрагируя из трех с гаком сотен URL нужные строки и порождая сводную таблицу в формате html, которую можно посмотреть в браузере и ручками скопировать туда, куда нужно. Да, URL пока что надо собирать вручную, да, на выходе все еще не tab-delimited текст, да, 50 МБ мусора на диске, но оно, повторю, работает. Помещаю его здесь как памятник усердию своему.
#!/usr/bin/env perl
use warnings;
use LWP::Simple;
use utf8;
use strict;
open (TABSRC, '>>', 'tabsrc.txt') or die $!;
open (URLS, '<', 'urls.txt') or die $!;
while (<URLS>) {
print TABSRC get($_);
}
close URLS;
close TABSRC;
open (INPUT, '<tabsrc.txt') or die $!;
open (TABSRC1, '>>tabsrc.1.txt') or die $!;
while (<INPUT>) {
s/\n//g;
s/\t//g;
s/\<div class\=\"w940/\n<div class\=\"w940/g;
print TABSRC1 ($_);
}
close INPUT;
close TABSRC1;
open (INPUT1, '<tabsrc.1.txt') or die $!;
open (TABSRC2, '>>tabsrc.2.txt') or die $1;
while (<INPUT1>) {
if ($_ =~ m/\<div class\=\"w940 tb-1\"/g) {
print TABSRC2 ($_);}
}
close INPUT1;
close TABSRC2;
open (INPUT2, '<tabsrc.2.txt') or die $1;
open (TABSRC3, '>>tabsrc.3.txt') or die $1;
while (<INPUT2>){
s/\<tr class\=\"odd\"\>\<td class\=\"all_right\"\>\<a href\=\"/\n\<tr class\=\"odd\"\>\<td class\=\"all_right\"\>\<a href=\"/g;
print TABSRC3 ($_);
}
close INPUT2;
close TABSRC3;
open (INPUT3, '<tabsrc.3.txt') or die $1;
open (TABSRC4, '>>tabsrc.4.txt') or die $1;
while (<INPUT3>){
s/\<table/\n\<table/g;
s/\<\/table\>\<\/div\>\<div class\=\"section\"\>//g;
print TABSRC4 ($_);
}
close INPUT3;
close TABSRC4;
open (INPUT4, '<tabsrc.4.txt') or die $1;
open (TABSRC5, '>>tabsrc.5.html') or die $1;
print TABSRC5 '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">',"\n",'<table>',"\n";
while (<INPUT4>){
if ($_ =~ m/^\<tr(.*)/) {
print TABSRC5 ($_);}
}
print TABSRC5 '</table>';
close INPUT4;
close TABSRC5;
no subject
Date: 2012-01-10 12:48 pm (UTC)завидую кодерам,потому что сам я технарь "не-алё")
no subject
Date: 2012-01-10 01:05 pm (UTC)