今天尝试抓取汇率数据的时候发现找不到靠谱的API或者数据来源,最后选定了Google财经HK。它的汇率数据在 class=bid 的元素里,但是是数字中文混在一起的,通过截取前6位字符串可以分析出汇率。并且查询也可以直接通过URL进行参数输入,比较方便。
抓取AF美国官网数据
今天尝试抓取AF美国官网数据,在抓取的过程中发现,网站会自动根据访问IP地址跳转到HK官网,导致抓取的网站内容变成了香港官网数据,遂采用cURL使用代理进行抓取。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
//初始化 $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); |
然后将cURL获得的结果 $output 代入PHP Simple HTML DOM Parser进行分析
|
1 2 |
//进行解析 $html = str_get_html($output); |
这里需要用到 str_get_html ( string $content ) 代替原来的 file_get_html ( string $filename )
保存程序处理状态
因为淘宝对抓取次数由限制,故在抓取的过程中要被打断多次,每次都需要手动更改循环初始参数非常麻烦,所以试着保存程序最后处理状态,在下次运行程序时可以直接读取最后的处理状态。
抓取淘宝店铺的信用等级数据
今天尝试抓取淘宝店铺的信用等级,由于淘宝的信用等级是按照图片来进行显示的,所以需要根据显示的图片来转换到对应的信用等级。
延迟载入技术对抓取的影响
最近很多单页主题都用到了这个技术,其实这个技术很早就有了。延迟载入技术的核心就是将图片等需要占用下载带宽的大元素放在非标准的DOM结构参数中,然后通过JavaScript读取参数,并在网页载入完成后再动态生成这些元素,这样可以明显的加快网页第一次加载完成的速度,不会因为部分图片的瓶颈,使得整个网页的加载被拖延。