前些日子有点空闲就做了一个简单的爬虫,爬取了知乎50W条数据,因为知乎有测试流量过大,导致经常有验证码,本人图片验证码没有研究所以每次都是手动输入,有兴趣的小伙伴可以做个自动识别验证码就可以无限采取了
爬虫使用了curl
public function zhihu($url){
$param = false;
$header= false;
$postUrl = $url;
$curlPost = $param;
$ch = curl_init();//初始化curl
if(substr($url,0,5)=='https'){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法
}
curl_setopt($ch, CURLOPT_URL,$postUrl);//抓取指定网页
curl_setopt($ch, CURLOPT_HEADER,0);//设置header
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
if($header){
curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
}
// curl_setopt($ch, CURLINFO_HEADER_OUT, true);//获取httpheader所有数据
if($curlPost){
curl_setopt($ch, CURLOPT_POST,1);//post提交方式
curl_setopt($ch, CURLOPT_POSTFIELDS,$curlPost);
}
$data = curl_exec($ch);//运行curl
curl_close($ch);
return $data;
}
在爬取的时候感觉单线程较慢并且知乎有验证码,所以就做了一个php多线程爬取
多线程详细解释网址:https://blog.csdn.net/xyf_1995/article/details/81092094
在数据录入数据库的时候做了一个唯一索引,防止用户重复,但是TP自带的插入语法碰到唯一索引会报错,而不是忽略
然后我百度查找最后对insert进行了修改
insert修改详细代码:https://blog.csdn.net/xyf_1995/article/details/81092760
以上工作做好后就可以愉快的采集了
采集的数据没有时间作分析,就不展示了
有兴趣的小伙伴可以下载继续往下做和优化