Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> HTML::TableExtract получение значений ячеек 
V
    Опции темы
Зюзе
Дата 10.6.2009, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 27.2.2009

Репутация: нет
Всего: нет



Добрый день. Накатал скрипт который получает из HTML странички таблицу:

Код

use strict;
use LWP::UserAgent;
use HTTP::Request;
use HTML::TableExtract;
#use HTML::TableExtract qw(tree);
use HTML::Tree;
use Data::Dumper;
my $ua = LWP::UserAgent->new(timeout => 10);
my $url = 'file:/c:\Perl\bin\bid.htm';
my $request = HTTP::Request->new('GET',$url);
my $response = $ua->request($request);
my $content = $response;
my $te = HTML::TableExtract->new( headers => [qw(Bid Ask Last)] );
$te->parse($content);
print $te->as_text;
#print $te;
#print Dumper $te;
#print $content;


застрял на том, как получить значения ячеек таблицы из этого $te  smile  smile  smile 

Таблица в bid.htm простая, выглядит так:
Bid  Ask Last
100 400 700
200 500 800
300 600 900
 
подскажите как получить значения ячеек... smile  


 

 

PM MAIL   Вверх
shamber
Дата 10.6.2009, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



perldoc пробовали?

Код

foreach my $ts ($te->tables) {
   print "Table found at ", join(',', $ts->coords), ":\n";
   foreach my $row ($ts->rows) {
      print "   ", join(',', @$row), "\n";
   }
 }



Это сообщение отредактировал(а) shamber - 10.6.2009, 21:09
PM MAIL Jabber   Вверх
Зюзе
Дата 10.6.2009, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 27.2.2009

Репутация: нет
Всего: нет



shamber, добавил что вы написали, теперь выводит:
Global symbol "$ts" requires explicit package name at 2.pl line 24.
Global symbol "$ts" requires explicit package name at 2.pl line 25.
Global symbol "$row" requires explicit package name at 2.pl line 26.
Global symbol "$ts" requires explicit package name at 2.pl line 26.
Global symbol "$row" requires explicit package name at 2.pl line 27.
требует, какое то имя пакета, как это поправить ? 
З.Ы. 
убрал use strict; после этого заработало, выводит 
Код

HTML::TableExtract=HASH(0x1cc663c)

и все. 
Как можно проверить что он там насобирал ?
З.З.Ы.Я с перлом 2 раз дело имею  smile 
Не подскажете как в perldoc попасть ?


Это сообщение отредактировал(а) Зюзе - 10.6.2009, 16:50
PM MAIL   Вверх
KSURi
Дата 10.6.2009, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 20
Всего: 27



Цитата(Зюзе @  10.6.2009,  16:14 Найти цитируемый пост)
Не подскажете как в perldoc попасть ?

Очевидно, командой perldoc. Или, не менее очевидно, через сайт perldoc.perl.org

Это сообщение отредактировал(а) KSURi - 10.6.2009, 18:30


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
shamber
Дата 10.6.2009, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Цитата(Зюзе @  10.6.2009,  16:14 Найти цитируемый пост)
требует, какое то имя пакета, как это поправить ? 

Я подредактировал свой пост. там уже исправлено

Цитата(Зюзе @  10.6.2009,  16:14 Найти цитируемый пост)
Как можно проверить что он там насобирал ?

решеточку снимите smile
Цитата(Зюзе @  10.6.2009,  11:57 Найти цитируемый пост)
#print Dumper $te;




Это сообщение отредактировал(а) shamber - 10.6.2009, 21:10
PM MAIL Jabber   Вверх
Зюзе
Дата 11.6.2009, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 27.2.2009

Репутация: нет
Всего: нет



shamber, я наверно тупой  smile 
Код

HTML::TableExtract=HASH(0x1cc47e4)
$VAR1 = bless( {
                 '_ts_sequential' => [],
                 'headers' => [
                                'Bid',
                                'Ask',
                                'Last'
                              ],
                 'br_translate' => 1,
                 'gridmap' => 1,
                 'strip_html_on_match' => 1,
                 'subtables' => undef,
                 'decode' => 1,
                 'keep_headers' => 0,
                 '_in_a_table' => 0,
                 'debug' => 0,
                 '_tables' => {},
                 '_cdepth' => -1,
                 'count' => undef,
                 'automap' => 1,
                 'error_handle' => \*::STDOUT,
                 'depth' => undef,
                 'keep_html' => 0,
                 'attribs' => undef,
                 '_hparser_xs_state' => \25734300,
                 'slice_columns' => 1,
                 '_counts' => [],
                 '_tablestack' => []
               }, 'HTML::TableExtract' );

но где тут значения ячеек ?  smile  smile  smile 
PM MAIL   Вверх
shamber
Дата 11.6.2009, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Хорошо, пойдем другим путем.
Приложите ваш html файл. Будем думать
PM MAIL Jabber   Вверх
Зюзе
Дата 11.6.2009, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 27.2.2009

Репутация: нет
Всего: нет



что-то через форум не выкладывается, залил сюда http://dump.ru/file/2883028

Это сообщение отредактировал(а) Зюзе - 11.6.2009, 10:43
PM MAIL   Вверх
shamber
Дата 11.6.2009, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



У вас косяк в скрипте замените 12 линию на 
Код

my $content = $response->as_string;

И будет вам хорошо smile

Как-то так
Код

use strict;
use LWP::UserAgent;
use HTTP::Request;
use HTML::TableExtract;
#use HTML::TableExtract qw(tree);
#use HTML::Tree;
use Data::Dumper;
my $ua = LWP::UserAgent->new(timeout => 10);
my $url = 'file:/c:/Perl/!My/vingrad/html/bid.htm';
my $request = HTTP::Request->new('GET',$url);
my $response = $ua->request($request);
my $content = $response->as_string;
my $te = HTML::TableExtract->new( headers => [qw(Bid Ask Last)] );
$te->parse($content);

foreach my $ts ($te->tables) {
   print "Table found at ", join(',', $ts->coords), ":\n";
   foreach my $row ($ts->rows) {
      print "   ", join(',', @$row), "\n";
   }
 }


Это сообщение отредактировал(а) shamber - 11.6.2009, 13:19
PM MAIL Jabber   Вверх
Зюзе
Дата 11.6.2009, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 27.2.2009

Репутация: нет
Всего: нет



shamber, спасибо огромное, все заработало.
Жалко плюсануть не могу постов не хватает :(

PM MAIL   Вверх
shamber
Дата 11.6.2009, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Раз плюсануть не можете, то хоть галочку поставьте, что вопрос решен smile
PM MAIL Jabber   Вверх
Зюзе
Дата 11.6.2009, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 27.2.2009

Репутация: нет
Всего: нет



поставил  smile 
PM MAIL   Вверх
mario315
Дата 11.6.2009, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 24.1.2009

Репутация: нет
Всего: нет



А если столбцы записаны русскими буквами, то не работает. Как быть в этом случае?
PM MAIL   Вверх
shamber
Дата 11.6.2009, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



mario315, Encode?
PM MAIL Jabber   Вверх
mario315
Дата 11.6.2009, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 24.1.2009

Репутация: нет
Всего: нет




Цитата(shamber @  11.6.2009,  15:54 Найти цитируемый пост)
mario315, Encode? 


Что-то не пойму как работает

Страница в кодировке UTF-8

Код

use strict;
use LWP::UserAgent;
use HTTP::Request;
use HTML::TableExtract;
use Encode;
use HTML::Tree;
use Data::Dumper;

my $ua = LWP::UserAgent -> new();
my $url = 'http://localhost/file.php';
my $request = HTTP::Request -> new('GET', $url);
my $response = $ua ->request($request);
my $val = "Цена";
my $encodeval = encode("utf8", $val);
my $content = $response -> as_string;
my $te = HTML::TableExtract -> new( headers => [$encodeval] );
$te -> parse($content);

foreach my $ts ($te -> tagles) {
             print 'table founda at ', join(',', $ts -> coords), ':\n';
             foreach my $row ($ts -> @$rows) {
                      print ' ', join(',', @$rows), '\n';
             }
}


Ничего не получается. Если вместо Цены подставить Price, то все работает. Как бы сделать, что бы и с Ценой работало?
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1535 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.