很多时候需要从目标网站抓取一些数据回来,就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/','./'); //使用方法