实现sohu社区′只看楼主′的功能,抓取连载帖子中楼主的所有帖子

搜狐社区缺少“只看楼主”功能,手动找楼主帖子困难。作者编写Perl程序自动抓取楼主帖子并保存。文中给出Perl解释器下载地址,还展示了抓取帖子的Perl程序代码,包含GUI界面及页面解析等功能。

sohu社区(http://club.sohu.com/main.php),经常有一些不错的连载的帖子,少则几千个回复,多则可以上万个,可是最有用最想看的楼主的帖子也就几十个,从这些成千上万的帖子中,一个个找搂主的帖子实在困难重重,不光手累眼累,主要是时间浪费不起!
提了好几次意见,要求增加“只看楼主”的功能,但现在还是没有。

没办法只有自己动手了,写了这个Perl程序,自动抓取所有楼主的帖子保存下来,轻轻松松的欣赏。

注:执行Perl程序需要Perl解释器,其下载地址:(http://www.activestate.com/Products/Download/Download.plex?id=ActivePerl
,在左边找到《Windows》条目,其下面的《AS package》或者《MSI》任意一个下载安装就行了!

下面是抓取帖子的Perl程序,记事本保存为1.pl,双击打开或右键`打开方式`->`Perl解释器`。
#-----------------------------------------------------


#! perl
use warnings;
use strict;
use IO::Socket;
use Tk;

my $url = '';
my $saveFilePath = 'C:/'; #这里文件路径是用来存储抓取的内容
my $saveFileName = '';
my $username = '';  #可以不抓楼主的,在这里给出用户呢称
#------------------------------------------------------
my $nullurl1='1.帖子已经被删除';
my $nullurl2='2.URL或者参数错误';
#-----------------GUI----------------------------------
my $top = new MainWindow(-title=>"Please Copy-Paste:");
$top->Label(-text=>"http://")->pack(-side=>'left',-expand=>0);
my $text = $top->Text(qw(-height 1))->pack(-side=>'left',-expand=>0);
$top->Button(-text=>"Go",-command=>sub{$url=$text->Contents;$top->destroy;})->pack();
MainLoop;
#------------------------------------------------------
sub main
{
    #print "Please Copy-Paste:/nhttp://" unless($url);
    #$url=<STDIN> unless($url);chomp($url);
    $url='http://'.$url if ($url !~ m!^http://!);print "/n"x5,"Prase... $url";
    my $tempFileName=join('',localtime);open(F,">$saveFilePath$tempFileName")||die("Can't open file $!");print F "$url/n/n";
    my ($urlbeg,$urlend) = $url =~ /(.*-)/d(-.*)/;die("URL error!/t$url/n") unless($urlbeg || $urlend);
    for(my $page=0; parsePage($urlbeg.$page.$urlend,/*F); $page+=12){}
    $saveFileName.=".htm";close F;rename("$saveFilePath$tempFileName","$saveFilePath$saveFileName");
    print '-'x34,"/nParse Success!< $saveFilePath$saveFileName >/n",'-'x34;
#    Tk::MessageBox->new(-message=>"Parse Success!< $saveFilePath$saveFileName >");
}main;

sub parsePage{
    my ($urlarg,$F) = @_;
    my ($host,$file) = $urlarg =~ m!http://([^/]+)(/[^/#]*)!;
    die "Host error/n" unless ($host);
    die "File error/n" unless ($file);
    if ($host)
    {
    my $socket = IO::Socket::INET->new(PeerAddr => $host,PeerPort => 'HTTP(80)');
    return 1 unless( defined($socket) );
    print $socket "GET $file HTTP/1.0/n/n";
    $_=<$socket>;return 0 if (/404 Not Found/);
    my ($finder,$effectiveUrl)=(0,0);
    
    while( my $line=<$socket> )
    {
        $line =~ s//r//g;
        if (!$finder){return 0 if($line =~ /$nullurl1/);}#|| $line =~ /$nullurl2);
        $saveFileName=$1 if("" eq $saveFileName && $line=~//<title/>(.*)/<//title/>/);
        if ($line =~ /.*/<script src=(http:////.*)/>/<//script.*/)
        {
       ($finder,$effectiveUrl) = (1,$1);
       my ($host,$file) = $effectiveUrl =~ m!http://([^/]+)(/[^/#]*)!;
       if ($host)
       {
           print "Parse...  $file";
           my $socket1 = IO::Socket::INET->new(PeerAddr => $host,PeerPort => 'HTTP(80)');
           next unless( defined($socket1));
           print $socket1 "Get $effectiveUrl HTTP/1.0/n/n";
           my ($finded,$content,$inputdate)=(0);
           while( <$socket1> )
           {
          $_ =~ s//r//g;
          $content = $1 if (/.*var.* body_.*=/'(.*)/'/);
          return (print "Server:Access control configuration prevents your request"),0 if (/403 Forbidden/i);
          $username=$1 if (!$username && /var nickname_.*=/'(.*)/'/);
          $finded=1 if (/var nickname_.*=/'$username/'/);
          $inputdate=$1,print "/t[Post: $1]/n" if (/var inputdate_.*=/'(.*)/'/);
           }
           print $F "$inputdate/t$effectiveUrl/n/n$content/n/n/n" if ($finded);
       } 
      }
    }
   }
    return 1;
} # parsePage

内容概要:本文围绕含氢气氨气的综合能源系统优化调度展开研究,提出了一种基于Matlab的仿真建模与优化方法,旨在实现多能互补、高效利用与低碳运行。研究构建了包含风能、太阳能、电解水制氢、氢气储存、氢合成氨、氨储存及能源转换设备在内的综合能源系统架构,重点考虑了氢、氨作为二次能源载体在能量存储与转化中的关键作用。通过建立系统各组件的数学模型,如电解槽效率模型、合成氨反应动力学模型、储氢储氨容量模型等,并结合可再生能源出力不确定性、负荷需求波动等因素,构建了以系统运行成本最小化、碳排放最小化或多目标综合最优为目标的优化调度模型。采用智能优化算法(如改进粒子群算法、多目标优化算法等)对模型进行求解,实现了对系统中各类设备出力、储能充放电状态、能量交互功率等变量的精细化调度,有效提升了能源利用效率与系统经济性。; 适合人群:具备一定电力系统、能源工程或自动化专业背景,熟悉Matlab/Simulink仿真工具,从事新能源、综合能源系统、氢能等领域研究的研发人员、研究生及高年级本科生。; 使用场景及目标:① 为含氢、氨等新型能源载体的综合能源系统规划设计提供理论依据和技术支撑;② 实现对风光等波动性可再生能源的高效消纳,提高系统灵活性与可靠性;③ 通过优化调度降低系统运行成本与碳排放强度,服务于“双碳”战略目标。; 阅读建议:此资源以Matlab代码实现为核心,提供了完整的仿真模型与优化算法代码,学习者应结合相关专业知识,深入理解模型构建的物理意义与数学表达,调试并运行代码以掌握其工作流程,进而可根据实际需求对模型进行扩展与改进。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值