V1.3更新内容
V1.3更新内容
今天尝试抓取AF美国官网数据,在抓取的过程中发现,网站会自动根据访问IP地址跳转到HK官网,导致抓取的网站内容变成了香港官网数据,遂采用cURL使用代理进行抓取。
//初始化 $ch = curl_init(); //设置选项,包括URL curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //curl_setopt($ch, CURLOPT_REFERER, $refer); curl_setopt($ch, CURLOPT_HEADER, 0); //curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查 //curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在 curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC); //代理认证模式 curl_setopt($ch, CURLOPT_PROXY, "127.0.0.1"); //代理服务器地址 curl_setopt($ch, CURLOPT_PROXYPORT, 8088); //代理服务器端口 //curl_setopt($ch, CURLOPT_PROXYUSERPWD, ":"); //http代理认证帐号,username:password的格式 curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP); //使用http代理模式 curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"); //执行并获取HTML文档内容 $output = curl_exec($ch); //释放curl句柄 curl_close($ch);
2014.4.20-V1.2-Update
Screenshots
最近发现在用WIFI上网的时候出现很多不正常的现象
因为淘宝对抓取次数由限制,故在抓取的过程中要被打断多次,每次都需要手动更改循环初始参数非常麻烦,所以试着保存程序最后处理状态,在下次运行程序时可以直接读取最后的处理状态。
首先在每次循环的最后加入保存状态的语句
//更新缓存状态参数 $oMySQL->ExecuteSQL(" UPDATE `cache` SET `value`= '".$i."' WHERE `name`= 'last-update-shop-num' ");然后在循环开始前对循环初始变量进行判断
先读取数据库中保存的状态
//获取缓存数据 $rel = $oMySQL->ExecuteSQL(' SELECT * FROM `cache` WHERE `name` = "last-update-shop-num" LIMIT 0 , 1 ');然后与数据库中的店铺总数进行对比
if( $cache['value'] < $count ) $i = $cache['value']; else $i = 0;