一,背景
爬虫作为能自动高效获取目标数据网络机器人被运用于很多需要数据支撑的软件开发中,在此要说的就是基于php使用curl方式来爬取数据;
而具体项目经历便是我第一次写的爬虫,虽然过了挺久了,现想找时间记录一下,希望能给一些初学者一些参考。
二,正文
1,配置设置
常见网页分为两种,http和https而在curl方式中就主要以cuel_setopt来设置爬取时的各种属性系数(各个系数使用方式可参考http://www.php.net/manual/zh/function.curl-setopt.php),
而决定是抓取htttp还是抓取https的语句是curl_setopt(ch,CURLOPTSSLVERIFYPEER,FALSE);和curlsetopt(ch, CURLOPT_SSL_VERIFYHOST, FALSE);
以下是设置为只能抓取http协议的网页,要抓取https协议的网页只需在执行前加上刚刚那两行代码即可
2,执行curl_exec(ch);返回抓取的HTML,(有时不是html,有可能是json等具体看需求是要页面明面上的数据还是其接口的返回数据)ch= curl_init();
curl_setopt($ch,CURLOPT_URL,”http://www.qq.com/“);
//设置抓取的url
curl_setopt(ch,CURLOPTHEADER,1);//设置头文件的信息作为文件流返回curlsetopt(ch, CURLOPT_RETURNTRANSFER, 1);
$ CH =curl_init();
curl_setopt($ ch,CURLOPT_URL,“ http://www.qq.com/ ”); //设置抓取的url
curl_setopt($ ch,CURLOPT _ HEADER,1); //设置头文件的信息作为文件流返回
// curl _ setopt($ch,CURLOPT _ SSL _ VERIFYPEER,FALSE); // https请求不验证证书和主机
// curl_setopt($ ch,CURLOPT _ ENCODING,“gzip,deflate”);
// curl _ setopt($ ch,CURLOPT_ENCODING,'gzip'); //
curl _ setopt($ ch,CURLOPT _ POST,1);
curl _ setopt($ CH,CURLOPT _ TIMEOUT,10);
curl _ setopt($ ch,CURLOPT _ PROXYAUTH,CURLAUTH _ BASIC); //代理认证模式
curl_setopt($ ch,CURLOPT _ PROXYTYPE,CURLPROXY _ HTTP); //使用HTTP代理模式
$data = curl_exec($CH);
echo $ date;
3,关于ip代理,有时候会遇到ip封禁的问题,curl爬虫体制提供利用ip代理来爬行的方式
4,对html解析,解析html其实就是对一大段字符串的数据筛选,第一时间我们可以想到正则表达式来筛选,但这个还需要一些测试正则匹配结果的可用性,于是在此我们使用更为有效筛选的解析包simple_html_dom,需要去网上下载一个php文件文件名为simple_html_dom,一般在搜索引擎搜索simple_html_dom下载即可找到,
总结
以上只是php爬虫的最基本操作,爬虫往往是程序员之间的博弈,目标愿意让你爬就很轻易,目标不想让你爬,那就看是谁的能力更强,技术更新更硬了,比如我现在在做的一个新的项目中就涉及了请求头的模拟cookie值的解析js,对于ip封禁问题的解决,有时候我们甚至还需要去模拟移动端来抓取数据,以后面对其他需求,tcp/ip协议层和多线程等技术都得涉及,特别是网络原理方面的知识大家都得加强,个人观点,共勉= =