使用phantomjs进行网页抓取的实现代码


Posted in Javascript onSeptember 29, 2014

phantomjs因为是无头浏览器可以跑js,所以同样可以跑dom节点,用来进行网页抓取是再好不过了。

比如我们要批量抓取网页 “历史上的今天” 的内容。网站

使用phantomjs进行网页抓取的实现代码

对dom结构的观察发现,我们只需要取到 .list li a的title值即可。因此我们利用高级选择器构建dom片段

var d= ''
var c = document.querySelectorAll('.list li a')
var l = c.length;
for(var i =0;i<l;i++){
d=d+c[i].title+'\n'
}

之后只需要让js代码在phantomjs里跑起来即可~

var page = require('webpage').create();
	page.open('http://www.todayonhistory.com/', function (status) { //打开页面
		if (status !== 'success') {
			console.log('FAIL to load the address');
		} else {
			console.log(page.evaluate(function () {
					var d= ''
					var c = document.querySelectorAll('.list li a')
					var l = c.length;
					for(var i =0;i<l;i++){
					d=d+c[i].title+'\n'
					}
						return d
				}))

		}
		phantom.exit();
	});

最终我们另存为catch.js,在dos里面执行一下,输出内容到txt文件(也可以用phantomjs的文件api来写)

使用phantomjs进行网页抓取的实现代码

Javascript 相关文章推荐
如何用javascript控制上传文件的大小
Oct 26 Javascript
JavaScript性能优化 创建文档碎片(document.createDocumentFragment)
Jul 13 Javascript
js 创建快捷方式的代码(fso)
Nov 19 Javascript
探索Emberjs制作一个简单的Todo应用
Nov 07 Javascript
javascript用户注册提示效果的简单实例
Aug 17 Javascript
jQuery中detach()方法用法实例
Dec 25 Javascript
JavaScript+html5 canvas制作的圆中圆效果实例
Jan 27 Javascript
AngularJS模板加载用法详解
Nov 04 Javascript
JS实现的Unicode编码转换操作示例
Apr 28 Javascript
js简易版购物车功能
Jun 17 Javascript
简单介绍react redux的中间件的使用
Apr 06 Javascript
JavaScript作用域链实例详解
Jan 21 Javascript
Javascript获取CSS伪元素属性的实现代码
Sep 28 #Javascript
js获取元素相对窗口位置的实现代码
Sep 28 #Javascript
Internet Explorer 11 浏览器介绍:别叫我IE
Sep 28 #Javascript
浏览器缩放检测的js代码
Sep 28 #Javascript
排序算法的javascript实现与讲解(99js手记)
Sep 28 #Javascript
Javascript中封装window.open解决不兼容问题
Sep 28 #Javascript
jQuery固定浮动侧边栏实现思路及代码
Sep 28 #Javascript
You might like
[原创]效率较高的php下读取文本文件的代码
2008/07/02 PHP
PHP获取url的函数代码
2011/08/02 PHP
ThinkPHP自动填充实现无限级分类的方法
2014/08/22 PHP
Yii把CGridView文本框换成下拉框的方法
2014/12/03 PHP
jQuery中需要注意的细节问题小结
2011/12/06 Javascript
JQuery slideshow的一个小问题(如何发现及解决过程)
2013/02/06 Javascript
js实现图片轮换效果代码
2013/04/16 Javascript
Jquery同辈元素选中/未选中效果的实例代码
2013/08/01 Javascript
js格式化金额可选是否带千分位以及保留精度
2014/01/28 Javascript
Jquery在指定DIV加载HTML示例代码
2014/02/17 Javascript
JavaScript检查弹出窗口是否被阻拦的方法技巧
2015/03/13 Javascript
JavaScript中window.open用法实例详解
2015/04/15 Javascript
异步加载JS、CSS代码(推荐)
2016/06/15 Javascript
jquery获取链接地址和跳转详解(推荐)
2017/08/15 jQuery
详解使用Typescript开发node.js项目(简单的环境配置)
2017/10/09 Javascript
ES6 迭代器与可迭代对象的实现
2019/02/11 Javascript
详解如何理解vue的key属性
2019/04/14 Javascript
Django 连接sql server数据库的方法
2018/06/30 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
2019/07/08 Python
Django中使用MySQL5.5的教程
2019/12/18 Python
python实现的分层随机抽样案例
2020/02/25 Python
python实现图片,视频人脸识别(opencv版)
2020/11/18 Python
HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
2018/01/03 HTML / CSS
shallow copy和deep copy的区别
2016/05/09 面试题
J2EE面试题集锦(附答案)
2013/08/16 面试题
财务管理专业应届毕业生求职信
2013/09/22 职场文书
汽车工程专业应届生求职信
2013/10/19 职场文书
应届毕业生个人求职自荐信
2014/01/06 职场文书
课改先进个人汇报材料
2014/01/26 职场文书
新春联欢会主持词
2014/03/24 职场文书
部队2014年终工作总结
2014/11/27 职场文书
2014年保育员个人工作总结
2014/12/02 职场文书
预备党员个人总结
2015/02/14 职场文书
2015年食品安全工作总结
2015/05/15 职场文书
工作简报范文
2015/07/21 职场文书
golang 实现菜单树的生成方式
2021/04/28 Golang