file_get_contents 和 curl 这俩强悍的函数,在远程抓取时候至关有用处.不过一些网站会根据来访ip是否携带user_agent来判断是正常的浏览器客户端仍是机器.因此,咱们的任务就是给他们伪造user_agent.web
file_get_contents伪造user_agent 方法以下:
浏览器
ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;http://www.9qc.com)');服务器
curl伪造user_agent的方法:
curl
curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;http://www.9qc.com)');
函数
curl的完整函数方法:
网站
function curl_get_file_contents($URL)
{
$c = curl_init();
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
//curl_setopt($c, CURLOPT_HEADER, 1);//输出远程服务器的header信息
curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;http://www.9qc.com)');
curl_setopt($c, CURLOPT_URL, $URL);
$contents = curl_exec($c);
curl_close($c);
if ($contents) {return $contents;}
else {return FALSE;}
}
这样就能够抓取了,user_agent能够本身修改. url
PS: (.*?):后面问号的意思是最少匹配(即懒惰匹配),若是没有那个问号就会最多匹配(即贪婪匹配)。spa