使用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 相关文章推荐
不错的一个日期输入 动态
Nov 06 Javascript
jQuery中size()方法用法实例
Dec 27 Javascript
JS Array.slice 截取数组的实现方法
Jan 02 Javascript
vue的状态管理模式vuex
Nov 30 Javascript
three.js 入门案例详解
Jan 23 Javascript
JavaScript this绑定过程深入详解
Dec 07 Javascript
vue使用codemirror的两种用法
Aug 27 Javascript
webgl实现物体描边效果的方法介绍
Nov 27 Javascript
vue ssr+koa2构建服务端渲染的示例代码
Mar 23 Javascript
从源码角度来回答keep-alive组件的缓存原理
Jan 18 Javascript
Vue中foreach数组与js中遍历数组的写法说明
Jun 05 Vue.js
js 实现验证码输入框示例详解
Sep 23 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字符串 ==比较运算符的副作用
2009/10/21 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
2010/10/25 PHP
php引用返回与取消引用的详解
2013/06/08 PHP
PHP禁止个别IP访问网站
2013/10/30 PHP
js身份证验证超强脚本
2008/10/26 Javascript
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
2009/12/02 Javascript
jquery multiSelect 多选下拉框
2010/07/09 Javascript
javascipt:filter过滤介绍及使用
2014/09/10 Javascript
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
9款2014最热门jQuery实用特效推荐
2014/12/07 Javascript
jquery实现TAB选项卡鼠标经过带延迟效果的方法
2015/07/27 Javascript
简述Matlab中size()函数的用法
2016/03/20 Javascript
Bootstrap的Refresh Icon也spin起来
2016/07/13 Javascript
scroll事件实现监控滚动条并分页显示(zepto.js)
2016/12/18 Javascript
详解js的事件代理(委托)
2016/12/22 Javascript
在vue中使用echarts图表实例代码详解
2018/10/22 Javascript
微信小程序图表插件wx-charts用法实例详解
2019/05/20 Javascript
微信小程序使用websocket通讯的demo,含前后端代码,亲测可用
2019/05/22 Javascript
[01:02:18]VGJ.S vs infamous Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
Python的iOS自动化打包实例代码
2018/11/22 Python
在Python 字典中一键对应多个值的实例
2019/02/03 Python
python实现多进程通信实例分析
2019/09/01 Python
Python中顺序表原理与实现方法详解
2019/12/03 Python
使用tqdm显示Python代码执行进度功能
2019/12/08 Python
socket.io 和canvas 实现的共享画板功能
2019/05/22 HTML / CSS
保时捷设计:Porsche Design
2019/03/30 全球购物
单位成立周年感言
2014/01/26 职场文书
黄继光的英雄事迹材料
2014/02/13 职场文书
新品发布会策划方案
2014/06/08 职场文书
防灾减灾日活动总结
2014/08/26 职场文书
运动会跳远广播稿5篇
2014/09/17 职场文书
乡镇党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
青年文明号申报材料
2014/12/23 职场文书
初二学生评语大全
2014/12/26 职场文书
两行代码解决Jupyter Notebook中文不能显示的问题
2021/04/24 Python
Python语言内置数据类型
2022/02/24 Python