想要下载指定一个网站的某文件夹里的文件,可否用 php 实现? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
eezh
V2EX    PHP

想要下载指定一个网站的某文件夹里的文件,可否用 php 实现?

  •  1
     
  •   eezh Oct 3, 2015 4440 views
    This topic created in 3872 days ago, the information mentioned may be changed or developed.

    发现某站的文件寄存 CDN 上,而且存储的比较有规律。
    例如 musicX 文件夹下的文件:
    http://cdn.baidu.com/musicX/01.imghttp://cdn.baidu.com/musicX/1.img
    http://cdn.baidu.com/musicX/02.imghttp://cdn.baidu.com/musicX/2.img
    ……
    http://cdn.baidu.com/musicX/20.imghttp://cdn.baidu.com/musicX/20.img
    (上述“ X ”代表 1-1000 的不同文件夹名称 images1 、 images2~images1000 )

    现在我想在 php 网页输入框里输入或者选中下拉文件夹名,即可在网页上显示出相应文件夹下的所有的的文件名及路径,点击即可实现文件下载。

    请大神赐教,不胜感激!

    Supplement 1    Oct 10, 2015
    ===============================================================
    ===============================================================
    感谢回复,问题已基本解决。
    思路: phpQuery 获取关键字,存入数组, foreach 循环读取, curl 判断文件是否存在, echo 全部文件地址。
    12 replies    2015-10-03 16:17:15 +08:00
    along
        1
    along  
       Oct 3, 2015 via Android
    符合迅雷批量下载规则
    zktz
        2
    zktz  
       Oct 3, 2015
    最多 1000 个么
    直接 for 循环啊
    bdbai
        3
    bdbai  
       Oct 3, 2015 via iPhone
    curl 就行啦
    Daddy
        4
    Daddy  
       Oct 3, 2015
    @bdbai CURL 怎么用呢?
    aprikyblue
        5
    aprikyblue  
       Oct 3, 2015
    lincanbin
        6
    lincanbin  
       Oct 3, 2015
    curl_multi
    在 CLI 下做爬虫表现不错。
    lhx2008
        7
    lhx2008  
       Oct 3, 2015   1
    首先你说知道一个地址,就可以全自动递归所有子目录是不现实的
    其次,每个网站规则不同, 必须要每个网站都写规则,那么用 PHP 意义已经不大了,实质上只是一个下载地址的 excel 而已,你用 execl 也可以生成
    bdbai
        8
    bdbai  
       Oct 3, 2015 via iPhone
    @Daddy 爬一下所有子目录文件的范围,存下来。有关 cURL 请 rtfm ( PHP )。
    wkdhf233
        9
    wkdhf233  
       Oct 3, 2015   1
    主要还是一个文件是否存在的判断?
    for 循环遍历可能的文件名,然后 curl -I ( shell 是这个命令, PHP 里大概是哪个 curl_setopt )判断下 HTTP 头,看遍历过去的文件存在不,存在就输出
    也可以用 while ,加一个计数变量,如果 HTTP 头是 200 就清零, 404 的话就+1 ,超过一定值就跳出循环。这样就不用每次都去猜有多少文件了

    PS :脑洞一开,如果保证文件绝对连续,可以 1 , 2 , 4 , 8 , 16 。。号文件依次获取过去,遇上 404 就尝试与上次尝试的文件中间的那个,比如 8 号是 200 , 16 是 404 ,就尝试( 8+16 )/2=12 号,还是 404 就尝试( 12+8 )/2=10 号文件,一旦取得了文件号的界,一个 for 直接不判断的生成文件列表。
    初中教的二分法。。
    loveminds
        11
    loveminds  
       Oct 3, 2015
    @wkdhf233 不错
    lizhiqing1996
        12
    lizhiqing1996  
       Oct 3, 2015
    听说 shell 都可以
    About     Help     Advertise     Blog     API     FAQ     Solana     2953 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 48ms UTC 09:59 PVG 17:59 LAX 02:59 JFK 05:59
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86