Regex Perl屏幕从表中刮取数据

Regex Perl屏幕从表中刮取数据,regex,perl,screen,scrape,Regex,Perl,Screen,Scrape,我想编写一个Perl脚本来获取网页的html内容,然后刮取表的内容。确切的页面是: 到目前为止,我能够使用以下代码对艺术家、专辑和流派以及表格中的第一个条目进行正则化: use LWP::Simple; $url = "http://djbpmstudio.com/Default.aspx?Page=album&id=1"; my $mystring = get($url) or die "Error fetching source page."; $mystring =~ s/[\

我想编写一个Perl脚本来获取网页的html内容,然后刮取表的内容。确切的页面是:

到目前为止,我能够使用以下代码对艺术家、专辑和流派以及表格中的第一个条目进行正则化:

use LWP::Simple;

$url = "http://djbpmstudio.com/Default.aspx?Page=album&id=1";
my $mystring = get($url) or die "Error fetching source page.";
$mystring =~ s/[\r\n]/ /g;      #remove line breaks from HTML
$mystring =~ s/(>)\s+(<)/$1$2/g;    #Remove white space between html tags 
#print $mystring;

if($mystring =~ m{</table><h1>(.*?) - (.*?) - (.*?)</h1>}) {
    #Get Artist name and print
    print "Artist: $1\n";
    print "Album:  $2\n";
    print "Genre:  $3\n\n";

    if($mystring =~ m{</tr><tr class="row-(.*?)"><td>(.*?)</td><td align="right">(.*?)</td></tr>}) {
        #Get Songname and BPM and print
        #print "$1\t";
        print "$2\t";
        print "$3\n";
    }
}
使用LWP::Simple;
$url=”http://djbpmstudio.com/Default.aspx?Page=album&id=1";
my$mystring=get($url)或die“获取源页面时出错。”;
$mystring=~s/[\r\n]//g#从HTML中删除换行符
$mystring=~s/(>)\s+(使用几乎总是一个坏主意

别那么坏

使用理解HTML数据的模块来处理HTML数据

#!/usr/bin/perl
use warnings;
use strict;
use LWP::Simple;
use HTML::TableExtract;

my $html = get 'http://djbpmstudio.com/Default.aspx?Page=album&id=1';

my $te = new HTML::TableExtract( headers => ['Track Name', 'BPM'] );
$te->parse($html);
foreach my $ts ($te->table_states) {
   foreach my $row ($ts->rows) {
       next unless $row->[0] =~ /\w/;   # skip garbage rows
       printf "%-20s   ==>   %.2f\n", $row->[0], $row->[1];
   }
}
使用几乎总是一个坏主意

别那么坏

使用理解HTML数据的模块来处理HTML数据

#!/usr/bin/perl
use warnings;
use strict;
use LWP::Simple;
use HTML::TableExtract;

my $html = get 'http://djbpmstudio.com/Default.aspx?Page=album&id=1';

my $te = new HTML::TableExtract( headers => ['Track Name', 'BPM'] );
$te->parse($html);
foreach my $ts ($te->table_states) {
   foreach my $row ($ts->rows) {
       next unless $row->[0] =~ /\w/;   # skip garbage rows
       printf "%-20s   ==>   %.2f\n", $row->[0], $row->[1];
   }
}
用于从表中刮取数据,这将使您的生活更加轻松。

用于从表中刮取数据,这将使您的生活更加轻松。

的可能重复