Chinaunix首页 | 论坛 | 博客
  • 博客访问: 124729
  • 博文数量: 28
  • 博客积分: 2431
  • 博客等级: 大尉
  • 技术积分: 321
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-29 18:40
文章分类

全部博文(28)

文章存档

2011年(3)

2010年(6)

2009年(7)

2008年(12)

分类:

2008-12-28 12:43:48

最近由于一些工作上的原因,当然我的工作不算正式的工作,只是在学校有点必要而已,呵呵!!加上,现在和一些网上的perl朋友一起准备高一个关于perl的小项目,一起提高提高一下,所以呢,就有了这么一个脚本,权当热身和预习吧,呵呵!!

主要是抓取网页上的更新,然后把更新内容写进数据库。

(\d{4}-\d{1,2}-\d{1,2}).*/ig)
  {
  print encode("gb2312",decode("gb2312",$1)),"\t";
  next;
  }

  if($_=~/  {
  print encode("utf8",decode("gb2312",$1)),"\t",encode("utf8",decode("gb2312",$2)),"\n";
  }

}
close FILE;
select STDOUT;
if((stat $result)[7] == (stat $new_result)[7])
{
 print "Not Found\n";
 exit(0);
}
open RES,"<",$new_result||die "$!\n";
open FH,"<",$result||die "$!\n";
my @tmp=;
my %web;
while() #FILE is th new file
{
 my $found=1;
 foreach my $old_context(@tmp)
 {
  if($_ eq $old_context)
  {
  $found=0;
  last;
  }
  next;
 }
 #print if $found==1;
if($found)
{
my($date,$title,$site)=split /\t/,$_;
$site=$url.$site;
$web{$title}->{'date'}=$date;
$web{$title}->{'site'}=$site;
}
}
foreach(keys %web)
{
print $_,"\t",$web{$_}->{'date'},"\t",$web{$_}->{'site'},"\n";
}
close RES;
close FH;
unlink $result||die "can't remove $result:$!\n";
rename $new_result,'result'||die "can't rename:$!\n";
print 'Do you wang to write to the database:[Y/N]';
chomp(my $choose=);
if($choose eq 'y'||$choose eq 'Y')
{
##########以下为connect数据库-----------------
my $database='DBI:mysql:database=wei;host=127.0.0.1';
my $user='root';
my $pw='123456';
my $dbh=DBI->connect($database,$user,$pw,{'RaiseError'=>1})||die "can't connect to the database:$DBI::errstr\n";

foreach(keys %web)
{
 my $sql="insert into web(title,date,site) values('$_','$web{$_}->{'date'}','$web{$_}->{'site'}')";
 my $sth=$dbh->prepare("$sql");
 $sth->execute();
 $sth->finish();
}
$dbh->disconnect();
}
exit;

#!/usr/bin/perl -w
use LWP;
use Encode;
use DBI;
my $browser = LWP::UserAgent->new;
my $url='';
my $file='index.html';
my $result='result'; #the old one
my $new_result='new_result'; 
print my $time=localtime,":Now getting web,please wait.......\n";
my $response=$browser->get($url,':content_file'=>$file);
die "can't get $url --",$response->content_type unless $response->content_type eq 'text/html';
print 'Done.Now,analyzing......',"\n";
open FH,"<",$file||die "can't open $file :$!\n";
open FILE,">",$new_result||die "can't open $file for write:$!\n";
select FILE;
while()
{
 s/\t//;  
 if(/

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

wfnh2009-02-18 11:06:06

不好意思,冒犯了~

wfnh2009-02-18 11:05:52

不好意思,冒犯了~

chinaunix网友2009-02-17 10:03:45

请不要抓取此站www.sitedir.com.cn文件 我是sitedir站长

chinaunix网友2009-02-17 10:03:33

请不要抓取此站www.sitedir.com.cn文件 我是sitedir站长

chinaunix网友2009-02-17 10:03:18

请不要抓取此站www.sitedir.com.cn文件 我是sitedir站长