A. php怎么设置爬虫爬过的网页不再爬,原理是怎么样
爬过的网页网址放在一个数组或者list表或者其它地方,然后爬的时候去判断是否已存在,存在就不要去爬
B. PHP判断是不是爬虫的方法
理论上是无法判断,一般可以判断浏览器代理,但是爬虫其实可以完全模拟浏览器。我网站禁止爬虫的代码如下:
//禁止OFFICE、尼姆达、蜘蛛
if(stripos($_SERVER['HTTP_USER_AGENT'],'Microsoft')===0||
stripos($_SERVER['HTTP_USER_AGENT'],'Microsoft-WebDAV-MiniRedir')===0||
stripos($_SERVER['HTTP_USER_AGENT'],'Baispider')===0||
stripos($_SERVER['HTTP_USER_AGENT'],'SogouOrionspider')===0||
stripos($_SERVER['HTTP_USER_AGENT'],'Googlebot'))exit('EXPLORERERROR(你的浏览器出现严重错误),MAYBEINFFECTVIRUS(你的电脑可能感染病毒)!');
php和python 写爬虫采集一些简单的都可以,但是相对来说python更好,更方便,有很多现成的库和方法支持直接解析网站,剖析你需要的数据,而php需要你大部分正则匹配,麻烦。
D. php爬虫程序中怎么样伪造ip地址防止被封
使用IP代理
E. 如何用PHP做网络爬虫
其实用PHP来爬会非常方便,主要是PHP的正则表达式功能在搜集页面连接方面很方便,另外PHP的fopen、file_get_contents以及libcur的函数非常方便的下载网页内容。
F. 如何用php 编写网络爬虫
php不太适合用来写网络爬虫,因为几乎没有现成的框架,或者成熟的下载机制,也不太适合做并发处理.
下载页面的话除了一个curl,就是file_get_contents,或者curl_multi来做并发请求.curl可以代理端口,虚假ip,带cookie,带header请求目标页面,下载完成之后解析页面可以用queryList来解析html.写法类似jQuery.
提供给你我之前写的类:curl.php 希望可以帮到你.
QueryList.php和phpQuery.php由于文件太大了,没办法贴上来
<?php
classHttp{
publicfunctioncurlRequest($url,$postData='',$timeOut=10,$httpHeader=array()){
$handle=curl_init();
curl_setopt($handle,CURLOPT_URL,$url);
if($httpHeader){
curl_setopt($handle,CURLOPT_HTTPHEADER,$httpHeader);
}
curl_setopt($handle,CURLOPT_RETURNTRANSFER,true);
curl_setopt($handle,CURLOPT_HEADER,0);curl_setopt($handle,CURLOPT_TIMEOUT,$timeOut);
curl_setopt($handle,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($handle,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($handle,CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($handle,CURLOPT_USERAGENT,'Mozilla/5.0(Macintosh;IntelMacOSX10_7_2)AppleWebKit/537.36(KHTML,likeGecko)Chrome/27.0.1453.93Safari/537.36');curl_setopt($handle,CURLOPT_ENCODING,'gzip,deflate,sdch');
if(!empty($postData)){
curl_setopt($handle,CURLOPT_POST,1);
curl_setopt($handle,CURLOPT_POSTFIELDS,$postData);
}
$result['response']=curl_exec($handle);
$result['httpStatus']=curl_getinfo($handle,CURLINFO_HTTP_CODE);
$result['fullInfo']=curl_getinfo($handle);
$result['errorMsg']='';
$result['errorNo']=0;
if(curl_errno($handle)){
$result['errorMsg']=curl_error($handle);
$result['errorNo']=curl_errno($handle);
}
curl_close($handle);
return$result;
}
}
?>
G. php 实现网络爬虫
pcntl_fork或者swoole_process实现多进程并发。按照每个网页抓取耗时500ms,开200个进程,可以实现每秒400个页面的抓取。
curl实现页面抓取,设置cookie可以实现模拟登录
simple_html_dom 实现页面的解析和DOM处理
如果想要模拟浏览器,可以使用casperJS。用swoole扩展封装一个服务接口给PHP层调用
在这里有一套爬虫系统就是基于上述技术方案实现的,每天会抓取几千万个页面。
H. php爬虫如何切换代理
618代理IP,自建机房,HTTP代理,爬虫代理,价格超低。多种时长选择,满足不同用户的需求,超高可用率,支持HTTP,HTTPS,SOCKS5等协议。
I. php有哪些爬虫框架
Beanbun 是用 PHP 编写的多进程网络爬虫框架,具有良好的开放性、高可扩展性。
php爬虫框架phpspider
J. 你好,我如何用php来实现网络爬虫呢具体一点
以下是访问某音乐网站,并获取其歌曲名等数组的示例,你可以参考:
<?php
header('Content-type:text/html;charset=utf-8');
$doc = file_get_contents('http://www.songtaste.com/music/');
$pa = '{MSL\((.*)\);}';
preg_match_all($pa,$doc,$r);
for($i=0;$i<count($r[1]);$i++)
{
$r1 = explode(', ',$r[1][$i]);
echo '歌曲标题:'. iconv('gb2312','utf-8',$r1[0]) .' 歌曲ID:'.$r1[1].'<br/>';
}
?>