当前位置:
首页 > 技术 > php 模仿百度蜘蛛post抓取页面或图片

php 模仿百度蜘蛛post抓取页面或图片

该方法支持抓取指定的页面或图片,抓取图片时$encode要设置为false,因图片不支持编码格式。可以通过该方法模拟post取到数据,php获取post数据主要是这两句话代码:

curl_setopt($queryServer, CURLOPT_POST, 1); //post提交方式
curl_setopt($queryServer, CURLOPT_POSTFIELDS, $curlPost); //post数据

 

/**
 * $Url 需要抓取的页面地址
 * $UserAgent 需要返回的useragent信息 如“baiduspider”或“googlebot”
 * baiduspider+(+http://www.baidu.com/search/spider.htm)
 */
function GetSources($Url, $UserAgent='', $RefererUrl='', $encode=true) //Fetch specified page
{
     // $curlPost="a=123&b=456";
     $queryServer = curl_init(); //初始化curl
     curl_setopt($queryServer, CURLOPT_URL, $Url); //提交到指定网页
     curl_setopt($queryServer, CURLOPT_HEADER, 0); //设置header
     curl_setopt($queryServer, CURLOPT_USERAGENT, $UserAgent);
     curl_setopt($queryServer, CURLOPT_REFERER, $RefererUrl);
     curl_setopt($queryServer, CURLOPT_FOLLOWLOCATION,1);
     curl_setopt($queryServer, CURLOPT_RETURNTRANSFER, 1); //要求结果为字符串且输出到屏幕上
     curl_setopt($queryServer, CURLOPT_SSL_VERIFYPEER, FALSE); //https
     curl_setopt($queryServer, CURLOPT_SSL_VERIFYHOST, false); //https
     curl_setopt($queryServer, CURLOPT_CONNECTTIMEOUT, 30);
     curl_setopt($queryServer, CURLOPT_TIMEOUT, 60);
     // curl_setopt($queryServer, CURLOPT_POST, 1); //post提交方式
     // curl_setopt($queryServer, CURLOPT_POSTFIELDS, $curlPost); //post数据
     $MySources = curl_exec($queryServer);
     curl_close($queryServer);
     $MySources = $encode ? iconv("GBK", "UTF-8//IGNORE", $MySources) : $MySources; //如果你需要是的数据是utf-8编码的,这一行可以注销,如果需要gbk编码的,请保留.如果出现乱码,就是一行的问题
     // $MySources = mb_convert_encoding($MySources, "UTF-8", "GBK");
     return $MySources;
}
 
/*start invoke*/
$Url = "http://rainyin.com/195.html";
$cg['UserAgent'] = "baiduspider+(+http://www.baidu.com/search/spider.htm)";
$cg['RefererUrl'] = "http://rainyin.com";
$web = GetSources($Url, $cg['UserAgent'], $cg['RefererUrl']); //hit url
/*end invoke*/

php 模仿百度蜘蛛post抓取页面或图片:等您坐沙发呢!

发表评论

您必须 [ 登录 ] 才能发表留言!