- 论坛徽章:
- 0
|
本帖最后由 zhou20071801 于 2012-08-31 16:12 编辑
在论坛看到有人发了一个提取网页图片的帖子(http://bbs.chinaunix.net/thread-3766254-1-1.html),稍微做了一些修改,但是保存图片的时候图片名字乱码。但是如果我把从网页提取得到的源码(源码.txt)通过UE转换为ANSI/ASCLL格式后再运行之后的下载图片部分的代码可以显示中文。求解决方法或者保存为ANSI/ASCLL格式的代码。- use strict;
- use LWP::Simple;
- my $content;
- print "请输入网址:";
- chomp(our $soure=<STDIN>);
- my $url="http://$soure";
- $content = get($url) or die "Couldn't get it!\n";
- mkdir("c:\\网页图片\\$soure",0777);#以网站名字为名创建文件夹
- open CONFIG,">c:\\网页图片\\$soure\\源码.txt";
- print CONFIG"$content";
- close CONFIG;
- open RF,"<C:\\网页图片\\$soure\\源码.txt";
- my @img;
- our %hash;
- our $i=0;
- while(my $line=<RF>)
- {
- #提取图片地址和名-----------------------------------------------------------------------
- if($line=~m/\<img.*?alt=\"(.*?)\".*?src=\"(.*?((\.gif)|(\.jpg)|(\.png)|(\.swf)))\"/)
- {
- my $src=$2;
- my $alt=$1;
- $i++;
- my @array=split/\./,$src;#提取后缀
- my $houzui=pop @array;
- my $name="$alt$i\.$houzui";
- $hash{$src}=$name;
- }
- elsif($line=~m/\<img.*?src=\"(.*?((\.gif)|(\.jpg)|(\.png)|(\.swf)))\".*?alt=\"(.*?)\"/)
- {
- my $src=$1;
- my $alt=$2;
- $i++;
- my @array=split/\./,$src;#提取后缀
- my $houzui=pop @array;
- my $name="$alt$i\.$houzui";
- $hash{$src}=$name;
- }
- #-------------------------------------------------------------------------------------------
- }
- while( (my $Url,my $name) = each(%hash) )
- {
- print"$name\n";
- getstore($Url,"C:\\网页图片\\$soure\\$name") or die "get picture failed!"; #下载图片
- }
复制代码 网页的html文件格式为<img width="130" height="75" src="http://img1.gtimg.com/tech/pics/hv1/54/202/1127/73334739.jpg" alt="360搜索借尸魂">src后面是图片网址 alt后面是图片名称(腾讯网和新浪网是这样的其他没看)。 |
|