kouprianov: (Default)
[personal profile] kouprianov

Только было дал себе зарок забросить perl на неопределенный срок, как понял, что могу залезть на еще один сайт и качнуть оттуда данных. Одновременно на меня снизошло просветление -- замена и поиск наконец-то начали работать (возможно, помогли комментарии к предыдущей записи, а возможно какие-то тонкие флюиды просочились из заклинания, сотворенного [livejournal.com profile] 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;

Date: 2012-01-10 12:48 pm (UTC)
From: [identity profile] 0ll-is-matter.livejournal.com
круто!,если особенно иметь ввиду, вероятно,что данные биологические)))
завидую кодерам,потому что сам я технарь "не-алё")

Date: 2012-01-10 01:05 pm (UTC)
From: [identity profile] kouprianov.livejournal.com
Не, данные совершенно не биологические. Это я, по следам многих, смотрю для своего внутреннего употребления электоральную статистику. Я тоже завидовал-завидовал, а неделю назад решил, что надо перестать завидовать и научиться хотя бы основам. Мешало полное отсутствие опыта программирования, помогало знание статических html и css и опыт работы с текстами методом глобальных замен всего на все. Вот, за неделю создал нечто, топором удовлетворяющее мои примитивные потребности. Будь у меня больше свободного времени, уложился бы и в меньшие сроки, но в моих условиях и неделя -- неплохо.

March 2025

S M T W T F S
      1
2345678
910 1112131415
16171819202122
23242526272829
3031     

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 22nd, 2026 05:46 pm
Powered by Dreamwidth Studios