用php写ftp爬虫 php ftp服务器 ftp php代码 phpstorm ft

WBOY
Freigeben: 2016-07-29 08:54:03
Original
1544 Leute haben es durchsucht

今年选修了《英语电影赏析》,老师超级认真负责,课下作业简直******平均每天都要我们看一部电影,而且大部分都是那种狠文艺的7,80年前的,根本看不下去不说,网上还找不到。还好学习有个电影的ftp服务器,资源不少,就是分类比较乱,一个一个文件架找很麻烦,所以写了个小爬虫把资源全都弄下来,包括路径和文件名,以后就方便多了。

php有专门的ftp操做类,网上一搜一大把。基本的写在注释上面

记录下我这次遇到的几个问题:

1,获取目录名

之前都是用ftp_nlist()函数,但是目前的php改了,ftp_nlist()函数只列出文件,不列文件架名字。只能用ftp_rawlist(),这个就很详细,就像ls -al命令。所以用正则表达式把无关信息去掉,只留名字。这个不能判断文件名中有空格,空格前还是纯数字这种奇葩,o(︶︿︶)o 唉,也就我们学校能出现这种命名了。

preg_replace("/.+:*\\d+\\s/", "", $filename);
Nach dem Login kopieren
2,校内网匿名访问

用户名Anonymous,密码空。如果连不上可能需要该链接方式。

3,测试过程中可能指定文件路径,中文可能找不到,这时试试utf-8,  gbk,  ansi编码

4,在虚拟机xp上搭建ftp服务器测试,ip地址别写错了,囧~

5,php运行时间,我们学校服务器东西还真不少,各种乱七八糟的视频,默认30秒根本不够用,临时改变php执行时间,set_time_limit(0);//不限时

最后跑出来443kb的文本,汗~

贴代码:

Nach dem Login kopieren
	<?php set_time_limit(0);//默认30秒根本不够用好吗,让他不限时随便跑。
    $con = ftp_connect("192.168.56.11");<span style="white-space:pre">		//建立ftp连接,tcp三次握手
    $login = ftp_login($con, "duola", "你的密码");<span style="white-space:pre">	</span>//帐号密码登录
    $myfile=fopen("result.txt","w");<span style="white-space:pre">		</span>//存放结果的txt

    $queue = array("/");     //存放目录的队列<span style="white-space:pre">	</span>//开始的根目录

    while(!empty($queue)){    <span style="white-space:pre">			</span>//还有未遍历目录
        $list_now = array_shift($queue);<span style="white-space:pre">	</span>//从队列里拿到本次循环要处理的目录
        ftp_chdir($con, $list_now);<span style="white-space:pre">		</span>//改变当前目录
        $filelist = ftp_rawlist($con, $list_now);<span style="white-space:pre">	</span>//拿到本目录的内容

        $name = preg_replace("/.+:*\\d+\\s/", "", $filelist[2]);<span style="white-space:pre">	</span>//第一个文件或目录名字
        if(count($filelist) == 3 && ftp_size($con, $name) != -1){
            //只有一个电影,目录名字即为电影名<span style="white-space:pre">		</span>//这里是因为我们学校的电影大都是放到电影名的文件架下,而电影名是一堆乱码,所以这时记录目录名字
            fwrite($myfile, $list_now."\r\n");   
        }else{
            foreach($filelist as $file)<span style="white-space:pre">			</span>//合集文件架,下面好多电影,这时正常记录文件名
            {
                $filename = preg_replace("/.+:*\\d+\\s/", "", $file);
                   if(ftp_size($con, $filename) == -1){
                       <span style="white-space:pre">						</span>//发现目录 ,存到队列里,以后继续遍历,但不能使.(当前目录)  ..(父目录)
                       if($filename != "." && $filename != ".."){
                           array_push($queue, $list_now."/".$filename);
                           //echo "<br>\ndocument:".$list_now."/".$filename;
                       }
                   }
                else{ //合集里的电影
                       fwrite($myfile, $list_now."/".$filename."\r\n");
                   }
            }
        }

    }
    fclose($myfile);
    ftp_close($con);

?>
Nach dem Login kopieren

以上就介绍了用php写ftp爬虫,包括了ftp,php方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage