Хорошая практика парсинга конкретной таблицы HTML с URL в Perl - PullRequest
0 голосов
/ 30 января 2012

Учитывая HTML с табличными данными, подобными следующему ...

<tr class=nbg1><td><A HREF=api.dll?pgm=cdq32&p1=oavmsd&p2=fg3m9s5d&p3=&cmd=w1d27d0id9654&hl=antibio&lstid=026>Nadifloxacin</A></td><td>Aknetherapeutikum Antibiotikum (Gyrasehemmer)</td><td>WST</td><td></td></tr>
<tr class=nbg2><td><A HREF=api.dll?pgm=cdq32&p1=oavmsd&p2=fg3m9s5d&p3=&cmd=w1d27d0id9728&hl=antibio&lstid=026>Ertapenem</A></td><td>Antibiotikum</td><td>WST</td><td></td></tr>
<tr class=nbg1><td><A HREF=api.dll?pgm=cdq32&p1=oavmsd&p2=fg3m9s5d&p3=&cmd=w1d27d0id9761&hl=antibio&lstid=026>Panipenem</A></td><td>Beta-Lactam-Antibiotikum</td><td>WST</td><td></td></tr>
<tr class=nbg2><td><A HREF=api.dll?pgm=cdq32&p1=oavmsd&p2=fg3m9s5d&p3=&cmd=w1d27d0id10302&hl=antibio&lstid=026>Prulifloxacin</A></td><td>Antibiotikum (Gyrasehemmer)</td><td>WST</td><td></td></tr>
</table></td>
<td width=15></td><td valign=top nowrap class=NBG1>
<TABLE width="200" border="0" cellspacing="0" cellpadding="2">
<TR><TD CLASS="NBG2">
</TD></TR></TABLE><BR>

Мне нужно проанализировать URL и описание URL, где извлеченный URL будет использоваться для дальнейшего анализа подстраницы.Что было бы хорошей практикой для достижения этой цели, особенно получение URL.

текущий код:

my $te = HTML::TableExtract->new( depth => 3, count => 0 ); 
$te->parse($mainpage); 
my $ts = ""; 
my $row = ""; 
foreach $ts ($te->tables) { 
   foreach $row ($ts->rows) { 
      print @$row[0] . "\n"; 
   } 
}

Ответы [ 2 ]

0 голосов
/ 30 января 2012

, если вы хотите извлечь только атрибут href из каждого элемента a 'в этой таблице, нет необходимости использовать TableExtract, просто используйте HTML::Query

my $qry = HTML::Query->new(text => $mainpage);


my @hrefs = map { $_->attr('href') } grep { m/api\.dll/i } $qry->query('tr > td > a')->get_elements();

не проверял, но вы поняли ...

0 голосов
/ 30 января 2012

HTML :: TableExtract может помочь вам точно иметь дело с таблицами.

...