使用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 相关文章推荐
客户端静态页面玩分页
Jun 26 Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
Jan 09 Javascript
JavaScript中使用Object.create()创建对象介绍
Dec 30 Javascript
Node.js+Express配置入门教程
May 19 Javascript
js实现碰撞检测特效代码分享
Oct 16 Javascript
详解Vue.js基于$.ajax获取数据并与组件的data绑定
May 26 Javascript
利用vue.js实现被选中状态的改变方法
Feb 08 Javascript
vue.js 实现点击展开收起动画效果
Jul 07 Javascript
Vue项目History模式404问题解决方法
Oct 31 Javascript
vuex如何重置所有state(可定制)
Jan 17 Javascript
Vue函数式组件的应用实例详解
Aug 30 Javascript
vue使用exif获取图片旋转,压缩的示例代码
Dec 11 Vue.js
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
Discuz 模板语句分析及知识技巧
2009/08/21 PHP
PHP 读取大文件并显示的简单实例(推荐)
2016/08/12 PHP
微信公众号实现会员卡领取功能
2017/06/08 PHP
PHP设计模式之适配器模式定义与用法详解
2018/04/03 PHP
PDO::prepare讲解
2019/01/29 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
2019/08/05 PHP
线路分流自动跳转代码;希望对大家有用!
2006/12/02 Javascript
利用JS实现浏览器的title闪烁
2013/07/08 Javascript
jQuery实现炫酷的鼠标轨迹特效
2015/02/01 Javascript
javascript截取字符串小结
2015/04/28 Javascript
js 动态生成html 触发事件传参字符转义的实例
2017/02/14 Javascript
jQuery实现鼠标经过显示动画边框特效
2017/03/24 jQuery
vue实现搜索功能
2019/05/28 Javascript
jQuery 隐藏/显示效果函数用法实例分析
2020/05/20 jQuery
js实现表单项的全选、反选及删除操作示例
2020/06/05 Javascript
vue2.0实现列表数据增加和删除
2020/06/17 Javascript
Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)
2020/08/28 Javascript
[01:36:19]Secret vs NB 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python标准库os.path包、glob包使用实例
2014/11/25 Python
Python切片操作深入详解
2018/07/27 Python
python conda操作方法
2019/09/11 Python
8段用于数据清洗Python代码(小结)
2019/10/31 Python
使用pytorch和torchtext进行文本分类的实例
2020/01/08 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
2020/02/11 Python
使用Keras构造简单的CNN网络实例
2020/06/29 Python
使用TensorBoard进行超参数优化的实现
2020/07/06 Python
Python连接Mysql进行增删改查的示例代码
2020/08/03 Python
CSS3实现DIV圆角效果完整代码
2012/10/10 HTML / CSS
Priority Pass机场贵宾室会籍计划:全球超过1200间机场贵宾室
2018/08/26 全球购物
工作人员思想汇报
2014/01/09 职场文书
工作表现评语
2014/01/19 职场文书
物控部经理职务说明书
2014/02/25 职场文书
2014年化验室工作总结
2014/11/21 职场文书
看看如何用Python绘制小米新版天价logo
2021/04/20 Python
SQL实现LeetCode(196.删除重复邮箱)
2021/08/07 MySQL
解决IDEA翻译插件Translation报错更新TTK失败不能使用
2022/04/24 Python