使用php代码从网页中提取有效图片地址

需求:需要从网上一个网站多个网页中提取一部分图片的地址(如:http://photo.5617.com/photo_dir/L_20031203_091835_890_578.jpg),每个网页的格式固定,为同一个模板制作的(如:http://photo.5617.com/Show424.aspx),现在已经知道这个地址在Show424.asp的具体位置,如何将其给提取出来,并生成一个包含完整URL地址的列表。
分析:用C++等高级编程工具编写一个程序?C++我还不会,C我倒是会,估计用C来完成有一定的困难,还不如用Delphi,这个我还会一点。从网上找了点资料,我看还是用PHP完成行了。
试验结果:
    从网上下载了一段代买,然后经过自己的修改后,基本完成了我的要求。编写一个php来分析这些网页,从里面提取出图片地址就ok了。停,不是要从多个网页中提取地址么?!
    php中不是也有循环么?用for或者while来一个循环就ok了。考虑到这个php程序需要读写这些待处理的网页,如果让程序从网上去下载读取的话,估计执行速度慢的无法忍受(主要是网速不快、机器速度也不快:( ),那就先用flashget批量下载这些网页(批量下载的方法我在这里就不再罗索了),放在本机建立的apache的htdocs目录中,并在本机创建一个执行.php的环境(在本机创建一个php的环境,我在这里也不罗索了)。将下载下来的所有网页放在pic目录中,打开浏览器,运行这段代码,浏览器将显示出这些图片的完整地址,复制这份列表,找下载工具下载这些图片就可以了。详细代码如下:

<?php
$site="http://photo.5617.com/Show424.aspx";
//total=5119
$num=423;
$pageid=1;
while($pageid <$num){
$source="";
$filename="http://192.168.0.1/pic/Show".$pageid.".aspx";
$fp  =  fopen($filename,  "r");
while  ($buffer  =  fgets($fp,  1024))  {
$source .=$buffer;  }
fclose($fp);
//拆分,第一次用标签,<img  ...src=拆分,得到了以图形文件名开头的数组,
$splitres=split("((/">)|())+(<img)+[^<>]+(src=/")",$source);
for($i=6;$i<sizeof($splitres);$i++){
//二次拆分,用"拆分。因为文件名能含有",得到的拆分数组的第一个元素就是路径+文件名了,经过试验,当i=6 的时候,输出的结果刚好是我们需要找的地址;
unset($imgname);    //  再次使用前删除imgname变量;
$imgname=spliti("/"",$splitres[$i]); //将析取的图片信息依次赋给imgname变量
echo  $site.$imgname[0]."<br>";
}
$pageid=$pageid+1;
}
?>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值