使用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 30 Javascript
javascript动画对象支持加速、减速、缓入、缓出的实现代码
Sep 30 Javascript
AngularJs实现分页功能不带省略号的代码
May 30 Javascript
Javascript函数中的arguments.callee用法实例分析
Sep 16 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
Mar 07 Javascript
微信小程序中多个页面传参通信的学习与实践
May 05 Javascript
Angularjs自定义指令Directive详解
May 27 Javascript
在Swiper内如何制作CSS3动画效果示例代码
Dec 07 Javascript
详解webpack之scss和postcss-loader的配置
Jan 09 Javascript
vue 递归组件的简单使用示例
Jan 14 Vue.js
vue里使用create, mounted调用方法
Apr 26 Vue.js
让JavaScript代码更加精简的方法技巧
Jun 01 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
火车头discuz6.1 完美采集的php接口文件
2009/09/13 PHP
JS与PHP向函数传递可变参数的区别实例代码
2011/05/18 PHP
php 检查电子邮件函数(自写)
2014/01/16 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
2014/06/26 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
yii2-GridView在开发中常用的功能及技巧总结
2017/01/07 PHP
JS+ACTIVEX实现网页选择本地目录路径对话框
2013/03/18 Javascript
jquery ajax同步异步的执行最终解决方案
2013/04/26 Javascript
jQuery下实现等待指定元素加载完毕(可改成纯js版)
2013/07/11 Javascript
jCallout 轻松实现气泡提示功能
2013/09/22 Javascript
兼容IE、firefox以及chrome的js获取时间(getFullYear)
2014/07/04 Javascript
Javascript学习笔记之函数篇(六) : 作用域与命名空间
2014/11/23 Javascript
jQuery通过deferred对象管理ajax异步
2016/05/20 Javascript
js实现加载更多功能实例
2016/10/27 Javascript
实例解析jQuery工具函数
2016/12/01 Javascript
Layui table 组件的使用之初始化加载数据、数据刷新表格、传参数
2017/09/11 Javascript
Angular将填入表单的数据渲染到表格的方法
2017/09/22 Javascript
vue.js使用v-model指令实现的数据双向绑定功能示例
2018/05/22 Javascript
微信小程序自定义tabBar组件开发详解
2020/09/24 Javascript
微信小程序request请求封装,验签代码实例
2019/12/04 Javascript
[07:12]2014DOTA2西雅图国际邀请赛 黑马Liquid专题采访
2014/07/12 DOTA
[59:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第二局
2016/03/04 DOTA
[01:20:06]TNC vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python实现的金山快盘的签到程序
2013/01/17 Python
对numpy数据写入文件的方法讲解
2018/07/09 Python
基于python实现学生管理系统
2018/10/17 Python
Pycharm+Scrapy安装并且初始化项目的方法
2019/01/15 Python
对Python 字典元素进行删除的方法
2020/07/31 Python
机械系大学毕业生推荐信
2013/11/27 职场文书
小学三年级数学教学反思
2014/01/31 职场文书
团日活动总结怎么写
2014/06/25 职场文书
2014年预备党员端正入党动机思想汇报
2014/09/13 职场文书
分居协议书范本(律师见证版)
2014/11/26 职场文书
大学毕业生个人总结
2015/02/28 职场文书
暑期家教宣传单
2015/07/14 职场文书
80后创业总结的9条职场用人思想,记得收藏
2019/08/13 职场文书