使用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程序来实现动画功能
Mar 06 Javascript
Chrome Form多次提交表单问题的解决方法
May 09 Javascript
JQuery的read函数与js的onload不同方式实现
Mar 18 Javascript
基于jquery的禁用右键、文本选择功能、复制按键的实现代码
Aug 27 Javascript
jquery map方法使用示例
Apr 23 Javascript
JQuery显示、隐藏div的几种方法简明总结
Apr 16 Javascript
Js+Ajax,Get和Post在使用上的区别小结
Jun 08 Javascript
解决ie img标签内存泄漏的问题
Oct 13 Javascript
js实现控制文件拖拽并获取拖拽内容功能
Feb 17 Javascript
在小程序开发中使用npm的方法
Oct 17 Javascript
Vue传参一箩筐(页面、组件)
Apr 04 Javascript
JQuery绑定事件四种实现方法解析
Dec 02 jQuery
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 cookis创建实现代码
2009/03/16 PHP
php实现的简单日志写入函数
2015/03/31 PHP
最新最全PHP生成制作验证码代码详解(推荐)
2016/06/12 PHP
PHP身份证校验码计算方法
2016/08/10 PHP
jQuery 使用手册(三)
2009/09/23 Javascript
Jquery在IE7下无法使用 $.ajax解决方法
2009/11/11 Javascript
为jQuery.Treeview添加右键菜单的实现代码
2010/10/22 Javascript
js 利用className得到对象的实现代码
2011/11/15 Javascript
解决jquery的datepicker的本地化以及Today问题
2012/05/23 Javascript
jquery formValidator插件ajax验证 内容不做任何修改再离开提示错误的bug解决方法
2013/01/04 Javascript
原生js操作checkbox用document.getElementById实现
2013/10/12 Javascript
关于jquery的多个选择器的使用示例
2013/10/18 Javascript
Js+Jq获取URL参数的集中方法示例代码
2014/05/20 Javascript
jQuery遍历之next()、nextAll()方法使用实例
2014/11/08 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
2015/12/04 Javascript
jquery.masonry瀑布流效果
2017/05/25 jQuery
js封装成插件的步骤方法
2017/09/11 Javascript
基于 Immutable.js 实现撤销重做功能的实例代码
2018/03/01 Javascript
vue中v-for通过动态绑定class实现触发效果
2018/12/06 Javascript
小程序实现点击tab切换左右滑动
2020/11/16 Javascript
Python基于smtplib实现异步发送邮件服务
2015/05/28 Python
Python实现一个转存纯真IP数据库的脚本分享
2017/05/21 Python
Python实现获取本地及远程图片大小的方法示例
2018/07/21 Python
python面向对象实现名片管理系统文件版
2019/04/26 Python
python 串口读取+存储+输出处理实例
2019/12/26 Python
如何在scrapy中捕获并处理各种异常
2020/09/28 Python
CSS3 渐变(Gradients)之CSS3 径向渐变
2016/07/08 HTML / CSS
微软英国官方网站:Microsoft英国
2016/10/15 全球购物
PHP经典面试题
2016/09/03 面试题
自荐信格式技巧有哪些呢
2013/11/19 职场文书
开办化妆品公司创业计划书
2013/12/26 职场文书
会计学专业学生的求职信范文
2014/01/27 职场文书
财务会计专业求职信
2014/06/09 职场文书
2015年社区民政工作总结
2015/04/21 职场文书
加薪申请书应该这样写!
2019/07/04 职场文书
Laravel中获取IP的真实地理位置
2021/04/01 PHP