很多时候需要从目标网站抓取一些数据回来,就php而言比较常用的抓取方法有file_get_contents、curl、fopen和fsockopen。
但有一些网站为了防止别人抓取想尽了办法来限制别人抓取,上述4种方法有的是使你的请求超时,有的是直接给你一个错误的信息。
近日在采集豆瓣时就无法获取图片,所以我们这里使用wget来获取文件。
如果你的服务器或主机是liunx系统(需要开启system函数),还可以使用下面这个方法获取数据。liunx系统在shell脚本中下载用的最多的是wget命令,利用wget命令可避免受到服务器的限制,还可以做一些远程图片的抓取。
/** * 用shell获取远程文件 * * $url string 文件或网页地址 * $dir string 文件存放地址 默认是/tmp/ */ function getFileByWget($url, $dir='/tmp/') { if(empty($url)) { return null; } $file_name = $dir.md5(time().rand()); $commod = "wget -q {$url} -O {$file_name}"; system($commod); return ; } getFileByWget('http://laoji.org/','./'); //使用方法