使用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 相关文章推荐
js实现在字符串中提取数字
Nov 05 Javascript
javascript原型链继承用法实例分析
Jan 28 Javascript
Javascript中document.referrer隐藏来源的方法
Jan 16 Javascript
jq给页面添加覆盖层遮罩的实例
Feb 16 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
Jul 27 Javascript
JavaScript截屏功能的实现代码
Jul 28 Javascript
图片加载完成再执行事件的实例
Nov 16 Javascript
Bootstrap4如何定制自己的颜色和风格
Feb 26 Javascript
微信小程序如何修改radio和checkbox的默认样式和图标
Jul 24 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
Sep 20 Javascript
js获取本日、本周、本月的时间代码
Feb 01 Javascript
原生JavaScript实现拖动校验功能
Sep 29 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查询域名状态whois的类
2006/11/25 PHP
Zend Guard使用指南及问题处理
2015/01/07 PHP
php递归删除指定文件夹的方法小结
2015/04/20 PHP
PHP文件上传之多文件上传的实现思路
2016/01/27 PHP
laravel手动创建数组分页的实现代码
2018/06/07 PHP
鼠标右击事件代码(asp.net后台)
2011/01/27 Javascript
js中的事件捕捉模型与冒泡模型实例分析
2015/01/10 Javascript
jquery获取文档高度和窗口高度汇总
2016/01/25 Javascript
理解javascript中Map代替循环
2016/02/26 Javascript
JS延时器提示框的应用实例代码解析
2016/04/27 Javascript
手机图片预览插件photoswipe.js使用总结
2016/08/25 Javascript
vue.js指令和组件详细介绍及实例
2017/04/06 Javascript
ES6知识点整理之Proxy的应用实例详解
2019/04/16 Javascript
layui实现显示数据表格、搜索和修改功能示例
2020/06/03 Javascript
微信小程序学习总结(五)常见问题实例小结
2020/06/04 Javascript
vue抽出组件并传值实例
2020/07/31 Javascript
JS实现超级好看的鼠标小尾巴特效
2020/12/01 Javascript
vue基于Echarts的拖拽数据可视化功能实现
2020/12/04 Vue.js
[01:14]2014DOTA2展望TI 剑指西雅图newbee战队专访
2014/06/30 DOTA
[41:13]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第一场 11.20
2020/11/20 DOTA
Python MySQL数据库连接池组件pymysqlpool详解
2017/07/07 Python
使用Python检测文章抄袭及去重算法原理解析
2019/06/14 Python
3种python调用其他脚本的方法
2020/01/06 Python
python filecmp.dircmp实现递归比对两个目录的方法
2020/05/22 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
2021/01/12 Python
18-35岁旅游团的全球领导者:Contiki
2017/02/08 全球购物
Sephora丝芙兰印尼官方网站:购买化妆品和护肤品
2018/07/02 全球购物
办公室经理岗位职责
2014/01/01 职场文书
仓库管理制度
2014/01/21 职场文书
桥梁工程专业求职信
2014/04/21 职场文书
期末评语大全
2014/05/04 职场文书
5s推行计划书
2014/05/06 职场文书
禁止酒驾标语
2014/06/25 职场文书
员工三分钟演讲稿
2014/08/19 职场文书
2014社会治安综合治理工作总结
2014/12/04 职场文书
节约用电通知
2015/04/25 职场文书