利用nodejs+phantomjs+casperjs采集淘宝商品的价格
2015-07-23 16:16
411 查看
因为一些业务需求需要采集淘宝店铺商品的销售价格,但是淘宝详情页面的价格显示是通过js动态调用显示的.所以就没法通过普通的获取页面html然后通过正则或者xpath的方式获取到想到的信息了.
所幸我们现在有了casperjs.这个是一个基于Phantomjs的库,而Phantomjs则是一个服务器端的js api的webkit浏览器.是不是很神奇?真的是.net的以外的世界很神奇,我们要多走去看看.
好了,现在废话不多说,开始切入正题.
首先就是就是几个相关库的安装.安装过程很简单,相关内容大家百度即可.在文章的底部我也会列出参考链接.
我们先进行下简要的分析:
具体的操作流程就是利用casperjs模拟鼠标点击商品的图片,然后网页显示对应的价格.
默认情况是这样的,如果不点击颜色分类下的图片,则对应的促销价格也只是会显示一个区间.
而只要我们点击了颜色分类对应的图片之后,则会是下面的效果
那么我们具体的操作步骤应该是:
1)打开具体的商品详情页
2)获取到颜色分类下图片个数,然后依次模拟鼠标点击
3)每点击一次图片,然后获取对应的促销价格
4)保存每次操作后的结果到数据库或者本地文件中待下一步处理
下面我们就来具体的一步步实现上面分析后所需要的步骤:
1.初始化casperjs
2.打开具体的url
3.处理当前页面的所有sku价格与信息
4.将最后处理后得到的结果提交到服务器上
最后run即可.
通过以上4个步骤我们就能获取到单个链接下,所有sku的促销价格了.
现在还有个问题,就是我们的nodejs还没出场呢,不会把它忘记的,呵呵.
为什么这里casperjs都搞定了,还需要nodejs呢?那就是因为casperjs只能处理单个链接,如果有多条链接处理的话,就需要启动多个casperjs的实例来完成.
上面的所有代码都是casperjs的一个操作步骤,最后的一个run就是让这个实例按我们定义好的步骤来进行的一个完整的流程.
那么既然如果,我们就请nodejs出场吧~
当然,这里我们的casperjs需要进行模块化处理的,其实就是让casperjs可以获取调用的参数啦
以上,就是所有采集需要使用到的代码了!怎么样,是不是非常的彪悍啊,整个处理流程只用了区区100来行的代码,就搞定了所有的采集流程.
参考链接:
http://www.cnmiss.cn/?p=413 http://blog.csdn.net/sagomilk/article/details/20800543 http://www.cnblogs.com/zeusro/p/4188229.html http://casperjs.readthedocs.org/en/latest/modules/casper.html
所幸我们现在有了casperjs.这个是一个基于Phantomjs的库,而Phantomjs则是一个服务器端的js api的webkit浏览器.是不是很神奇?真的是.net的以外的世界很神奇,我们要多走去看看.
好了,现在废话不多说,开始切入正题.
首先就是就是几个相关库的安装.安装过程很简单,相关内容大家百度即可.在文章的底部我也会列出参考链接.
我们先进行下简要的分析:
具体的操作流程就是利用casperjs模拟鼠标点击商品的图片,然后网页显示对应的价格.
默认情况是这样的,如果不点击颜色分类下的图片,则对应的促销价格也只是会显示一个区间.
而只要我们点击了颜色分类对应的图片之后,则会是下面的效果
那么我们具体的操作步骤应该是:
1)打开具体的商品详情页
2)获取到颜色分类下图片个数,然后依次模拟鼠标点击
3)每点击一次图片,然后获取对应的促销价格
4)保存每次操作后的结果到数据库或者本地文件中待下一步处理
下面我们就来具体的一步步实现上面分析后所需要的步骤:
1.初始化casperjs
3.处理当前页面的所有sku价格与信息
4.将最后处理后得到的结果提交到服务器上
现在还有个问题,就是我们的nodejs还没出场呢,不会把它忘记的,呵呵.
为什么这里casperjs都搞定了,还需要nodejs呢?那就是因为casperjs只能处理单个链接,如果有多条链接处理的话,就需要启动多个casperjs的实例来完成.
上面的所有代码都是casperjs的一个操作步骤,最后的一个run就是让这个实例按我们定义好的步骤来进行的一个完整的流程.
那么既然如果,我们就请nodejs出场吧~
参考链接:
http://www.cnmiss.cn/?p=413 http://blog.csdn.net/sagomilk/article/details/20800543 http://www.cnblogs.com/zeusro/p/4188229.html http://casperjs.readthedocs.org/en/latest/modules/casper.html
相关文章推荐
- Windows下Node.js安装和配置
- node.js中的process.nextTick()和setImmediate()
- Node.js前端自动化工具:gulp
- 配置Mysql Cluster时出错Unable to connect with connect string: nodeid=0,localhost:1186问题的解决
- NodeJS + Socket.io聊天服务器连接数达到1024后就连不上了
- NodeJS + Socket.io搭建聊天服务器
- Count Complete Tree Nodes
- Delete Node in a Linked List
- LeetCode #19 Remove Nth Node From End of List
- Populating Next Right Pointers in Each Node
- nodejs之获取客户端真实的ip地址+动态页面中引用静态路径下的文件及图片等内容
- [Leetcode] Swap Nodes in Pairs
- NodeJS优缺点及适用场景讨论
- XmlNode中的Value值为空的问题
- [Leetcode 24, Medium] Swap Nodes in Pairs
- [Leetcode 117, Hard] Populating Next Right Pointers in Each Node II
- [Leetcode 116, Medium] Populating Next Right Pointers in Each Node
- [leedcode 117] Populating Next Right Pointers in Each Node II
- Remove Nth Node From End of List
- [leedcode 116] Populating Next Right Pointers in Each Node