爬虫抓取产品数据

声明:仅供学习参考,严禁用于非法或者侵权操作

一,首先要计划好

1.抓取分类
2.抓取分类的每页产品链接
3.抓取每页的产品链接
4.抓取每个产品
尽量的细分,一开始一个大循环,很容易把程序卡死.分而治之,稳多啦

二,选择爬虫工具

这里介绍两种

1.phpspider

优点:速度快,文档齐全,简单容易上手
缺点:只支持静态页面
composer require owner888/phpspider

2.PhantomJs

优点:功能强大,可以抓取js渲染后的数据
缺点:速度慢,抓取出来的数据,和实际数据,会有差异注意坑(可能是因为js渲染了两次引起的)
缺点:只支持静态页面
在抓取产品详情的时候,我发现属性为什么一直无法抓取呢?
原来属性是用js异步渲染的,这里只好使用PhantomJs
composer require jaeger/querylist-phantomjs

三,设计数据库,使用mysql队列

mysql队列更加直观,还能看到是否抓取成功,适合大量储存
1.分类url表 (里面有一个待抓取url)
2.页码url表page_list(里面有一个待抓取url)
3.产品url表product_list(里面有一个待抓取url)
4.产品表

三,执行头三步,生成产品队列

通过定时器,一步步生成产品url表,大约有几十万条数据

4,抓取产品

可以建10台虚拟机,用定时任务开始跑了,注意分库
根据公司产品特点抓取产品数据

            //初始化
            $ql = QueryList::getInstance();
            // 安装时需要设置PhantomJS二进制文件路径
            $ql->use(PhantomJs::class, '/usr/local/bin/phantomjs');
            //获取整个页面数据
            $ql->use(PhantomJs::class, '/usr/local/bin/phantomjs', 'browser');
            $producView = $ql->browser($produc)->getHtml();
            //使用phpspider选择器
            $produc = selector::select($producView, "//div[contains(@class,'contents')]", "xpath");

xpath选择器,真好用,老师再也不担心我不会写正则了
(正则精通帮助还是很大)

你可能感兴趣的:(爬虫抓取产品数据)