个人建议采集到的数据存储为二维数组,其中商品id是唯一的,所以将id作为键值,然后每个键值对应的是一个一次包含title,price等数据的二维数组,这样采集完成后,可以将这个二维数组遍历循环插入数据库,这样也不容易出现错误
10年的南部网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。网络营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整南部建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“南部网站设计”,“南部网站推广”以来,每个客户项目都认真落实执行。
比如其中一个商品id为1,标题为“牙刷”,价格为$2,就这样写入数组$arr[1]=array("牙刷","$2")
直接用Curl就行,具体爬取的数据可以穿参查看结果,方法不区分淘宝和天猫链接,但是前提是必须是PC端链接,另外正则写的不规范,所以可以自己重写正则来匹配数据。
用fopen/file/file_get_contents/curl之类的函数将远程页面获得内容, 采用正则或过滤之类的获得自己所需要的东西, 最好写入相应的数据库保存起来。
?php
class alibaba_analyse{
var $code ;
var $price;
var $info;
//你的错误位置, 构造函数是 __construct , 而不是 __constructs
public function __construct($keywords)
{
//页面是GBK编码,所以需要先转成GBK,在进行URL编码.
$u = "".urlencode(iconv('UTF-8', 'GB2312', $keywords));
$this-code = file_get_contents($u);
}
public function get_price()
{
/*
价格 是在 span class="sw-ui-font-priceIcon"450span class="smallSize".00/spanspan class="priceUnit"/span/span这样的字段中.
而不是在 div class="price f12 c-e1".*([\d\.]+?).*\/div中
preg_match_all('/div class="price f12 c-e1".*([\d\.]+?).*\/div/sU',$this-code,$price);
*/
preg_match_all('/span class="sw-ui-font-priceIcon"(\d+)(?:span class="smallSize")([\.\d]{3})?\/span/sU',$this-code,$price , PREG_SET_ORDER);
/*
得到的数据格式 , 所以需要使用 array_map 整理价格
Array
(
[0] = Array
(
[0] = span class="sw-ui-font-priceIcon"570span class="smallSize".00/span
[1] = 570
[2] = .00
)
....
)
*/
$this-price = array_map(create_function('$a' , 'return $a[1].$a[2];') , $price);
}
}
$ali = new alibaba_analyse("联想笔记本");
$ali-get_price();
print_r($ali-price);
代码给出了, 而且经过了测试. 代码中有注解.
你自己拷贝过去试试吧
希望能够采纳!,能当成优质答案就最好啦.!
简单的分了几个步骤:
1、确定采集目标
2、获取目标远程页面内容(curl、file_get_contents)
3、分析页面html源码,正则匹配你需要的内容(preg_match、preg_match_all),这一步最为重要,不同页面正则匹配规则不一样
4、入库