程序中遇到两个问题:1、我在程序中爬取百度上的数据,同一个ip爬取的次数太多被屏蔽了,有好的办法解决吗?用专门的爬虫程序可以解决吗?2、我连续去爬取同一网站的多个网址上的数据,在循环中做的,其中有一个爬取不成功的时候,循环就无法进行下去了,是什么原来呢?代码如下: header("Content-Type:text/html;charset=utf-8");
$keyword=iconv("utf-8","gb2312",$keyword);
$keyword = str_replace(' ','%20',$keyword);
$url = "http://www.baidu.com/s?wd=$keyword";
$opts = array(
'http'=>array(
'method'=>"GET",
'timeout'=>30,
)
);
$context = stream_context_create($opts);
$cnt=1;
while(($html = @file_get_contents($url,false,$context)) === false && $cnt <= 2 )
$cnt++;
$keyword=iconv("utf-8","gb2312",$keyword);
$keyword = str_replace(' ','%20',$keyword);
$url = "http://www.baidu.com/s?wd=$keyword";
$opts = array(
'http'=>array(
'method'=>"GET",
'timeout'=>30,
)
);
$context = stream_context_create($opts);
$cnt=1;
while(($html = @file_get_contents($url,false,$context)) === false && $cnt <= 2 )
$cnt++;
user_agent="PHP"//通常是这个
相对来说用curl和socket要好得多,也没那个问题,socket的效率更要好点
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.baidu.com/s?wd=$keyword');
curl_setopt(CURLOPT_USERAGENT, "Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.437.3 Safari/534.1");
curl_exec($ch);