使用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 相关文章推荐
使用JQuery和s3captche实现一个水果名字的验证
Aug 14 Javascript
JavaScript中SQL语句的应用实现
May 04 Javascript
Javascript实现的鼠标经过时播放声音
May 18 Javascript
js null,undefined,字符串小结
Aug 21 Javascript
js相册效果代码(点击创建即可)
Apr 16 Javascript
javascript查找字符串中出现最多的字符和次数的小例子
Oct 29 Javascript
javascript实现百度地图鼠标滑动事件显示、隐藏
Apr 02 Javascript
js仿搜狐视频记录片列表展示效果
May 30 Javascript
微信小程序实现长按删除图片的示例
May 18 Javascript
vue表单自定义校验规则介绍
Aug 28 Javascript
微信小程序接入vant Weapp组件的详细步骤
Oct 28 Javascript
原生js实现移动小球(碰撞检测)
Dec 17 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 excel reader读取excel内容存入数据库实现代码
2012/12/06 PHP
PHP实现限制IP访问及提交次数的方法详解
2017/07/17 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
JavaScript实现动态增加文件域表单
2009/02/12 Javascript
一些主流JS框架中DOMReady事件的实现小结
2011/02/12 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
2013/11/18 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
2014/12/05 Javascript
javascript定时器完整实例
2015/02/10 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
2016/02/18 Javascript
精通JavaScript的this关键字
2020/05/28 Javascript
探讨:JavaScript ECAMScript5 新特性之get/set访问器
2016/05/05 Javascript
Vue中CSS动画原理的实现
2019/02/13 Javascript
jQuery选择器之层次选择器用法实例分析
2019/02/19 jQuery
详解JS取出两个数组中的不同或相同元素
2019/03/20 Javascript
vue中利用Promise封装jsonp并调取数据
2019/06/18 Javascript
详解package.json版本号规则
2019/08/01 Javascript
Vue分页插件的前后端配置与使用
2019/10/09 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
2020/06/22 Javascript
如何在Vue.JS中使用图标组件
2020/08/04 Javascript
[34:08]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS EG
2018/03/30 DOTA
python中的内置函数getattr()介绍及示例
2014/07/20 Python
python开发之list操作实例分析
2016/02/22 Python
pip matplotlib报错equired packages can not be built解决
2018/01/06 Python
Python实现备份MySQL数据库的方法示例
2018/01/11 Python
Python设计模式之建造者模式实例详解
2019/01/17 Python
Python3并发写文件与Python对比
2019/11/20 Python
python实现图片上添加图片
2019/11/26 Python
pytorch-神经网络拟合曲线实例
2020/01/15 Python
python绘制动态曲线教程
2020/02/24 Python
Django Admin设置应用程序及模型顺序方法详解
2020/04/01 Python
python 如何设置守护进程
2020/10/29 Python
门卫岗位安全职责
2013/12/13 职场文书
车辆转让协议书
2014/04/15 职场文书
小学生操行评语大全
2014/04/22 职场文书
Golang Gob编码(gob包的使用详解)
2021/05/07 Golang
redis缓存存储Session原理机制
2021/11/20 Redis