免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2761 | 回复: 9
打印 上一主题 下一主题

perl获取网页图片 [复制链接]

论坛徽章:
6
卯兔
日期:2013-11-26 14:52:02丑牛
日期:2014-02-19 18:01:25卯兔
日期:2014-05-20 20:34:06白羊座
日期:2014-05-23 13:39:232015亚冠之大阪钢巴
日期:2015-08-07 20:57:582015亚冠之大阪钢巴
日期:2015-09-02 14:09:09
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-08-20 15:13 |只看该作者 |倒序浏览
本帖最后由 只是一个红薯 于 2012-08-20 16:17 编辑

use strict;
use LWP::Simple;
my $content;
print "请输入网址:";
chomp(my $soure=<STDIN>;
my $url="http://$soure";
$content = get($url) or die "Couldn't get it!\n";
my @a = split /\r?\n/, $content;
chomp @a;
open CONFIG,'>>:utf8','源码.txt';
print CONFIG $content;
close CONFIG;
my @img;
foreach(@a){
    if(/<img .*?src=\"(.*?(?\.gif)|(\.jpg)))\".*?>/){
        push  @img,$1;
   }
}
print "@img";

大家好!上面一段代码是包含了获取输入网页中的图片链接地址,存入@img中,我想从@img中下载图片并保存到本地,但是不成功,要不就保存一张图片就结束。
使用的是:
foreach(@img){
  my $url="$_";

getstore($url,$_ ) or die “get picture failed!”;  #不成功?
}

有人知道哪里错了吗?能指点下最好乐,谢谢!

论坛徽章:
5
亥猪
日期:2013-10-15 13:41:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34申猴
日期:2013-10-28 10:55:45辰龙
日期:2013-10-31 13:29:29丑牛
日期:2014-02-14 11:25:54
2 [报告]
发表于 2012-08-20 16:11 |只看该作者
本帖最后由 lkk_super 于 2012-08-20 16:11 编辑

getstore($url,$_ or die “get picture failed!”;  #不成功?


剩下半截括号捏?

论坛徽章:
6
卯兔
日期:2013-11-26 14:52:02丑牛
日期:2014-02-19 18:01:25卯兔
日期:2014-05-20 20:34:06白羊座
日期:2014-05-23 13:39:232015亚冠之大阪钢巴
日期:2015-08-07 20:57:582015亚冠之大阪钢巴
日期:2015-09-02 14:09:09
3 [报告]
发表于 2012-08-20 16:17 |只看该作者
刚敲键盘少打了一个),现在补上,但是foreach里getstore好像不怎么起作用回复 2# lkk_super


   

论坛徽章:
5
亥猪
日期:2013-10-15 13:41:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34申猴
日期:2013-10-28 10:55:45辰龙
日期:2013-10-31 13:29:29丑牛
日期:2014-02-14 11:25:54
4 [报告]
发表于 2012-08-20 16:19 |只看该作者
回复 3# 只是一个红薯


    getstore 函数肿么写的 贴出来啊~~~

论坛徽章:
6
卯兔
日期:2013-11-26 14:52:02丑牛
日期:2014-02-19 18:01:25卯兔
日期:2014-05-20 20:34:06白羊座
日期:2014-05-23 13:39:232015亚冠之大阪钢巴
日期:2015-08-07 20:57:582015亚冠之大阪钢巴
日期:2015-09-02 14:09:09
5 [报告]
发表于 2012-08-20 16:29 |只看该作者
他是LWP::Simple 模块下的一个函数。
getstore($url, $file)
Gets a document identified by a URL and stores it in the file. The return value is the HTTP response code.


回复 4# lkk_super


   

论坛徽章:
0
6 [报告]
发表于 2012-08-21 11:31 |只看该作者
你确定捕捉到的图片地址都是http开始的完整路径么?相对路径的图片你getstore不到的吧。

论坛徽章:
6
卯兔
日期:2013-11-26 14:52:02丑牛
日期:2014-02-19 18:01:25卯兔
日期:2014-05-20 20:34:06白羊座
日期:2014-05-23 13:39:232015亚冠之大阪钢巴
日期:2015-08-07 20:57:582015亚冠之大阪钢巴
日期:2015-09-02 14:09:09
7 [报告]
发表于 2012-08-21 11:51 |只看该作者
是绝对路径,这是输出到txt中的图片链接地址回复 6# lanmeibanban


   

论坛徽章:
6
卯兔
日期:2013-11-26 14:52:02丑牛
日期:2014-02-19 18:01:25卯兔
日期:2014-05-20 20:34:06白羊座
日期:2014-05-23 13:39:232015亚冠之大阪钢巴
日期:2015-08-07 20:57:582015亚冠之大阪钢巴
日期:2015-09-02 14:09:09
8 [报告]
发表于 2012-08-21 13:46 |只看该作者
本帖最后由 只是一个红薯 于 2012-08-21 13:46 编辑

多谢大家!问题已经解决了,我使用的是:
foreach(1..$#img){
  my $url=  pop @img;
state  $i++;
getstore($url,"$i.jpg" ) or die "get picture failed!";  #成功
$url=0;
}
如果大家有更好的方法可以分享下

论坛徽章:
0
9 [报告]
发表于 2012-08-28 19:52 |只看该作者

我在windows 下。用bat下载了一个网站的图片。提取网址。不同网站有所不不同

论坛徽章:
0
10 [报告]
发表于 2012-08-31 09:38 |只看该作者
请教一下state什么作用?$i用全局变量都只保存一个,但是用state就可以回复 8# 只是一个红薯


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP