博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
萌萌CasperJS第1篇 1分钟写完爬虫 拿亚马逊商品数据
阅读量:4131 次
发布时间:2019-05-25

本文共 3259 字,大约阅读时间需要 10 分钟。

角色

Q: 私ねえ, Qです,よろしくお願いしますよ (我呀, 是小Q,请多多关照哟)  
A:  我是大叔 啊叁锅米
Q: 原来是 阿三呀, 最近行情不好,跑cn来啦呀
A: ......
Q: 今天弄啥东东?
A: 小爬虫
Q: 做啥子哩
A:  爬爬AMAZON 的书价
Q: 为啥虫子要爬 AMAZON, 不吃树叶
A: ......

前提

会点页面javascript 

Q: 不会肿么办呀?

A:  。。。。。。

已安装配置好phantomjs, casperjs 

Q: 不会肿么办呀?

A: .。。。。。。

目标

 爬到 GOF的《设计模式》这本书 z.cn 上的价格 (当然,用最简单的方式)

分析

Q: 从哪里开始呀?
A:  那我们先来分析一下我们的目标 页面吧!

.

 对应的原始URL  是

[plain] 
  1. http://www.amazon.cn/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6%E4%B8%9B%E4%B9%A6-%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F-%E5%8F%AF%E5%A4%8D%E7%94%A8%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E8%BD%AF%E4%BB%B6%E7%9A%84%E5%9F%BA%E7%A1%80-Erich-Gamma/dp/B001130JN8/ref=sr_1_1?s=books&ie=UTF8&qid=1394283734&sr=1-1&keywords=%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F  

再看看页面结构,直接在价格右键审查元素 

[html] 
  1. <b class="priceLarge">¥ 28.40</b>  

编码

Q: 怎么还不到代码啊.....捉鸡呀(着急呀)

A: 别急。来了, 打开任何文本编辑器,开始写代码啦。

这个过程基本跟我们平时浏览网页步骤基本一样,

首先需要一个浏览器(这听起来有点多余)。

[javascript] 
  1. var brower = require('casper').create();  

准备个变量来放我们目标数据吧

[javascript] 
  1. var productPrice;  

然后呢,闭上眼睛先回想一下平时习惯查看该书在amazon的价格 简化操作步骤如下: 

  1. 打开浏览器
  2. 输入网址并打开(搜索过程也已经简化)
  3. 用眼搜索页面
  4. 查看价格

那我们就按照上面提到的这个顺序来模拟一次嘿嘿。

1.   打开浏览器

[javascript] 
  1. brower.start();  

2.  然后输入网址并打开

[javascript] 
  1. brower.thenOpen('http://www.amazon.cn/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6%E4%B8%9B%E4%B9%A6-%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F-%E5%8F%AF%E5%A4%8D%E7%94%A8%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E8%BD%AF%E4%BB%B6%E7%9A%84%E5%9F%BA%E7%A1%80-Erich-Gamma/dp/B001130JN8/ref=sr_1_1?s=books&ie=UTF8&qid=1394283734&sr=1-1&keywords=%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F');  


3.  然后用眼搜索页面

Q: 什么。。。。。。用眼,浏览器有什么眼睛,开什么国际玩笑.......

A: 确实没有,但是我们是模拟这个搜索,找价格哈

[javascript] 
  1. brower.then(function getPrice() {  
  2.     productPrice = brower.evaluate(function getPriceFromPage() {  
  3.         return  price = document.getElementsByClassName('priceLarge')[0].innerText.replace('¥''').trim();  
  4.     });  
  5.   
  6.     console.log(productPrice);  
  7. });  

4.  查看价格

 手有点多,顺便把浏览器给关啦 : )

[javascript] 
  1. brower.then(function outputProductPrice() {  
  2.     console.log(productPrice);  
  3.     brower.exit();  
  4. });  

好了,照理来说,这里就结束了,但是有个小问题,这个浏览器可不是现实的浏览器,我们只是定义了这是抓取数据的流程,下面要怎么办,那就把刚才那些 start 呀, then 啊跑起来吧

[javascript] 
  1. brower.run();  


好代码到此就告一段落了。

运行

让我们来运行一下吧, 在console里面

[objc] 
  1. casperjs amazon.js  
结果乖乖出来了吧。

Q: 咦,肿么是 window 的 console 的界面,连个linux都没, 一点都不高大上嘛

A: .......

全部代码

[javascript] 
  1. var brower = require('casper').create();  
  2. var productPrice;  
  3.   
  4. // 1. 打开浏览器  
  5. brower.start();  
  6.   
  7. // 2. 打开页面  
  8. brower.thenOpen('http://www.amazon.cn/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6%E4%B8%9B%E4%B9%A6-%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F-%E5%8F%AF%E5%A4%8D%E7%94%A8%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E8%BD%AF%E4%BB%B6%E7%9A%84%E5%9F%BA%E7%A1%80-Erich-Gamma/dp/B001130JN8/ref=sr_1_1?s=books&ie=UTF8&qid=1394283734&sr=1-1&keywords=%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F');  
  9.   
  10. // 3. 开始搜索价格  
  11. brower.then(function getPrice() {  
  12.     productPrice = brower.evaluate(function getPriceFromPage() {  
  13.         return  price = document.getElementsByClassName('priceLarge')[0].innerText.replace('¥''').trim();  
  14.     });  
  15. });  
  16.   
  17. // 4. 查看价格  
  18. brower.then(function outputProductPrice() {  
  19.     console.log(productPrice);  
  20.     brower.exit();  
  21. });  
  22.   
  23. // 将前面定义的步骤 跑起来  
  24. brower.run();  

参考

Q: 一定要看参考文档才能写么,感觉好难哟

A: .......可以不看,先复制过去跑起来也行的,硬要看的话就先看一点吧

casper module API :    

唠叨

Q:  呀呀呀,你 又说1分钟,我1分钟还不行呢,  肿么办才好?

A : 没事,你就慢慢试,弄到可以就行了,反正都会成功,迟一点又如何呢。

Q : 哎哎哎, 里面有很多东西,没讲到呀,咋整? 

A: 来日方长,慢慢来,比较快嘛,  里面涉及的东东,下回再分解吧 : )

你可能感兴趣的文章
初始化VUE项目报错
查看>>
vue项目使用安装sass
查看>>
HTTP和HttpServletRequest 要点
查看>>
在osg场景中使用GLSL语言——一个例子
查看>>
关于无线PCB中 中50欧姆的特性阻抗的注意事项
查看>>
Spring的单例模式源码小窥
查看>>
后台服务的变慢排查思路(轻量级应用服务器中测试)
查看>>
MySQL中InnoDB事务的默认隔离级别测试
查看>>
微服务的注册与发现
查看>>
bash: service: command not found
查看>>
linux Crontab 使用 --定时任务
查看>>
shell编程----目录操作(文件夹)
查看>>
机器学习-----K近邻算法
查看>>
HBASE安装和简单测试
查看>>
关于程序员的59条搞笑但却真实无比的编程语录
查看>>
搞笑--一篇有趣的文章编译自一篇西班牙博客。有一位美丽的公主,被关押在一个城堡中最高的塔上,一条凶恶的巨龙看守着她,需要有一位勇士营救她…
查看>>
非常不错 Hadoop 的HDFS (Hadoop集群(第8期)_HDFS初探之旅)
查看>>
Tomcat启动错误,端口占用
查看>>
laravel 修改api返回默认的异常处理
查看>>
高德坐标转换百度坐标 javascript
查看>>