使用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延迟加载(setTimeout) JS最后加载
Jul 15 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
Feb 06 Javascript
简单介绍JavaScript中字符串创建的基本方法
Jul 07 Javascript
javascript原生ajax写法分享
Apr 10 Javascript
javascript数组遍历的方法实例分析
Sep 13 Javascript
JS基于递归实现倒计时效果的方法
Nov 26 Javascript
jQuery实现页面滚动时智能浮动定位
Jan 08 Javascript
vue+Element-ui实现分页效果实例代码详解
Dec 10 Javascript
微信小程序时间选择插件使用详解
Dec 28 Javascript
说说如何利用 Node.js 代理解决跨域问题
Apr 22 Javascript
webpack常用构建优化策略小结
Nov 21 Javascript
d3.js 地铁轨道交通项目实战
Nov 27 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
Smarty Foreach 使用说明
2010/03/23 PHP
php无限分类且支持输出树状图的详细介绍
2013/06/19 PHP
JavaScript 克隆数组最简单的方法
2009/02/12 Javascript
JQuery this 和 $(this) 的区别
2009/08/23 Javascript
jquery异步调用页面后台方法&amp;#8207;(asp.net)
2011/03/01 Javascript
jQuery源码分析-03构造jQuery对象-源码结构和核心函数
2011/11/14 Javascript
javascript内存管理详细解析
2013/11/11 Javascript
$.each与$().each的区别示例介绍
2014/03/20 Javascript
jQuery插件datalist实现很好看的input下拉列表
2015/07/14 Javascript
JS+CSS实现自适应选项卡宽度的圆角滑动门效果
2015/09/15 Javascript
每天一篇javascript学习小结(基础知识)
2015/11/10 Javascript
浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
2018/02/21 Javascript
webpack+react+antd脚手架优化的方法
2018/04/02 Javascript
vue.js中proxyTable 转发请求的实现方法
2018/09/20 Javascript
vue + element-ui的分页问题实现
2018/12/17 Javascript
Jquery的autocomplete插件用法及参数讲解
2019/03/12 jQuery
Vue 实现从小到大的横向滑动效果详解
2019/10/16 Javascript
如何构建 vue-ssr 项目的方法步骤
2020/08/04 Javascript
python实现对任意大小图片均匀切割的示例
2018/12/05 Python
python元组和字典的内建函数实例详解
2019/10/22 Python
Tensorflow全局设置可见GPU编号操作
2020/06/30 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
Python爬虫之Selenium中frame/iframe表单嵌套页面
2020/12/04 Python
CSS3实现超酷的黑猫警长首页
2016/04/26 HTML / CSS
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
荷兰男士时尚网上商店:Suitable
2017/12/25 全球购物
顶岗实习接收函
2014/01/09 职场文书
你的创业计划书怎样才能打动风投
2014/02/06 职场文书
安全教育演讲稿
2014/05/09 职场文书
建设工程授权委托书
2014/09/22 职场文书
重温经典:乔布斯在斯坦福大学的毕业演讲(双语)
2019/08/26 职场文书
话题作文之自信作文
2019/11/15 职场文书
Html5获取用户当前位置的几种方式
2022/01/18 HTML / CSS
【海涛dota】偶遇拉娜娅 质量局德鲁伊第一视角解说
2022/04/01 DOTA
Python Matplotlib绘制动画的代码详解
2022/05/30 Python
flex布局中使用flex-wrap实现换行的项目实践
2022/06/21 HTML / CSS