Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5760787
  • 博文数量: 675
  • 博客积分: 20301
  • 博客等级: 上将
  • 技术积分: 7671
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-31 16:15
文章分类

全部博文(675)

文章存档

2012年(1)

2011年(20)

2010年(14)

2009年(63)

2008年(118)

2007年(141)

2006年(318)

分类:

2007-04-18 00:33:01

应周蓝珺的请求,给他做一个抽取指定页面的指定内容的脚本。
本来打算是使用shell来写的,但是想了一下,还是使用perl吧。练习一下自己的刚学的perl

实际上,周蓝珺所要求的就是去抽取新闻。

手工指定,新闻位于哪几个Table下的哪几个TD里面。然后,抽取出来形成一个新的html文本。

#!/usr/bin/env perl
#
#$ARGV[0]:OriginalFile
#$ARGV[1]:Title
#$ARGV[2]:SubURL
#$ARGV[3]:start_table
#$ARGV[4]:start_td
#$ARGV[5]:end_td1
#
#

if(@ARGV != 6)
{
    print "Usage: Extract <SubURL> <Start_table> <Start_td> <End_/td>\n";<br>    exit(1);<br>}<br><br>my $line;<br>my $state = 0;<br>my $count_table=0;<br>my $count_td=0;<br>my $count_td1=0;<br><br>my $OrigFile=$ARGV[0];<br>my $Title=$ARGV[1];<br>my $SubURL=$ARGV[2];<br>my $start_table = $ARGV[3];<br>my $start_td = $ARGV[4];<br>my $start_td1 = $ARGV[5];;<br><br><br>my $Dir=$ENV{'PWD'};<br>open(HTML,$Dir."/".$OrigFile) or die "cannot open file:$!";<br>open(OUTPUT,">$Dir"."/"."out_".$OrigFile) or die "cannot open file:$!";<br><br>#Add Title<br>print OUTPUT "<title>$Title\n";

while()
{
    chomp;
    $line=$_;

    #Trans Upper to Lower
    $line =~ tr/[A-Z]/[a-z]/;

    #Delete Commend Line
    if( ($line=~/\<\!--/) || ($state==1) )
    {
        $temp .= $line;
        if($line =~ /--\>/)
        {
            $state = 0;
            $temp="";
            next;
        }
        else
        {
            $state = 1;
            next;
        }
    }

    #Get the need text segment
    if(/\    {
        if($count_table < $start_table )
        {
            $count_table += 1;
        }
    }

    if($count_table == $start_table )
    {
        if(/\
        {
            if($count_td < $start_td )
            {
                $count_td += 1;
            }
        }

        if( $count_td == $start_td )
        {
            if(/\<\/td/)
            {
                if($count_td1 <= $start_td1 )
                {
                    $count_td1 += 1;
                }
            }
            if($count_td1 <= $start_td1 )
            {
                if( $line=~/href=\"\./ )
                {
                    $line =~ s@href=".@href="$SubURL@g;
                }
                print OUTPUT $line."\n";
#                print $line."\n";
            }
        }
    }
}

close(HTML);
close(OUTPUT);

先wget下指定URL的网页,再使用上面的脚本处理。
wangyao@fisherman:~/perl/extract$ wget -O ir.htm > /dev/null 2>&1
wangyao@fisherman:~/perl/extract$ ./Extract.pl ir.htm HIT_IR_Lab 7 5 16

阅读(2567) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~