使用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 相关文章推荐
用javascript实现分割提取页面所需内容
May 09 Javascript
Auntion-TableSort国人写的一个javascript表格排序的东西
Nov 12 Javascript
jQuery textarea的长度进行验证
May 06 Javascript
JQuery加载图片自适应固定大小的DIV
Sep 12 Javascript
JavaScript该如何学习 怎样轻松学习JavaScript
Jun 12 Javascript
使用js获取伪元素的content实例
Oct 24 Javascript
jQuery中图片展示插件highslide.js的简单dom
Apr 22 jQuery
js使用formData实现批量上传
Mar 27 Javascript
实例分析编写vue组件方法
Feb 12 Javascript
Element中的Cascader(级联列表)动态加载省\市\区数据的方法
Mar 27 Javascript
vue实现表格合并功能
Dec 01 Vue.js
详解Anyscript开发指南绕过typescript类型检查
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脚本的10个技巧(5)
2006/10/09 PHP
php学习 函数 课件
2008/06/15 PHP
php checkbox复选框值的获取与checkbox默认值输出方法
2010/05/15 PHP
php下正则来匹配dede模板标签的代码
2010/08/21 PHP
如何利用PHP执行.SQL文件
2013/07/05 PHP
ThinkPHP文件上传实例教程
2014/08/22 PHP
详解PHP中的序列化、反序列化操作
2017/03/21 PHP
javascript生成/解析dom的CDATA类型的字段的代码
2007/04/22 Javascript
用js做一个小游戏平台 (一)
2009/12/29 Javascript
js中split函数的使用方法说明
2013/12/26 Javascript
JavaScript语言对Unicode字符集的支持详解
2014/12/30 Javascript
jQuery设置和移除文本框默认值的方法
2015/03/09 Javascript
跟我学习javascript的循环
2015/11/18 Javascript
AngularJS应用开发思维之依赖注入3
2016/08/19 Javascript
Select2.js下拉框使用小结
2016/10/24 Javascript
Bootstrap Table使用整理(五)之分页组合查询
2017/06/09 Javascript
JavaScript之Date_动力节点Java学院整理
2017/06/28 Javascript
ES6学习教程之对象字面量详解
2017/10/09 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
vue 组件中slot插口的具体用法
2018/04/03 Javascript
基于JS实现带动画效果的流程进度条
2018/06/01 Javascript
[27:28]Ti4 冒泡赛第二天 iG vs NEWBEE 1
2014/07/15 DOTA
爬山算法简介和Python实现实例
2014/04/26 Python
实例讲解Python设计模式编程之工厂方法模式的使用
2016/03/02 Python
Python 爬虫模拟登陆知乎
2016/09/23 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
2018/02/13 Python
使用python中的in ,not in来检查元素是不是在列表中的方法
2018/07/06 Python
Python多进程入门、分布式进程数据共享实例详解
2019/06/03 Python
Python for循环通过序列索引迭代过程解析
2020/02/07 Python
python3连接MySQL8.0的两种方式
2020/02/17 Python
Python类和实例的属性机制原理详解
2020/03/21 Python
ORLY官网:美国专业美甲一线品牌
2019/12/11 全球购物
泰国Robinson百货官网:购买知名品牌的商品
2020/02/08 全球购物
会计出纳岗位职责
2013/12/25 职场文书
公司新员工的演讲稿注意事项
2014/01/01 职场文书
股东协议书范本2016
2016/03/21 职场文书