htmlparse
<html>
<head>
<style>
textarea{
width:800px;
height:250px;
}
</style>
<script>
/**
*Dom 类
*存储Dom树节点
*/
function Dom() {
this.tag = "";
this.attributes=[];// id class style name
this.innerHtml = "";
this.parent = "";
this.children=[];
this.num = 0;
this.cssNums =[];
this.each = function() {
}
}
/**
*HtmlParser类
*解析html文档
*/
function HtmlParser(html) {
this.parse = function(html,pDom) {
var dom = new Dom();
// 生成节点编号
dom.num = 1;
// 获取节点标签
dom.tag = this.getTag(html);
// 获取节点属性
dom.attributes = this.getAttributes(html);
// 获取节点innerHtml
dom.innerHtml = this.getInnerHtml(html);
// 生成节点父亲
dom.parent = pDom;
// 生成节点孩子 ==>如果innerHtml中有孩子,生成孩子,否则结束
if(this.isExistNode(dom.innerHtml)) {
var nodes = this.splitNodes(dom.innerHtml);
for (var i=0;i < nodes.length;i++) {
var childDom = this.parse(nodes[i],dom);
dom.children.push(childDom);
}
}
return dom;
};
// 获取节点的标签
this.getTag = function(html) {
var tag = "tag";
var tagStart = html.indexOf('<');
var spacePst = html.indexOf(' ',tagStart);
var rightPst = html.indexOf('>',tagStart);
var tagEnd = rightPst;
if (spacePst!=-1 && spacePst<rightPst) {
tagEnd = spacePst;
}
tag = html.substring(tagStart,tagEnd);
return tag;
}
// 获取节点的属性
this.getAttributes = function(html) {
var attributes = "attributes";
return attributes;
}
// 获取节点的innerHtml
this.getInnerHtml = function(html) {
var innerHtml = "innerHtml";
return innerHtml;
}
// 判断innerHtml 中是否有节点
this.isExistNode = function (html) {
return false;
}
// 将innerHtml 分割成孩子节点数组,必须保证里面有节点才能调用该函数
this.splitNodes = function (html) {
var nodes = [];
return nodes;
}
}
// 主函数
function main(){
var html = document.getElementById("content");
var htmlParser = new HtmlParser();
var dom = htmlParser.parse(html,"");
alert(dom.num + " " +dom.tag + " " + dom.attributes +" " +dom.innerHtml);
document.getElementById("result").value = dom;
}
</script>
</head>
<body>
<textarea id="content"></textarea>
<input type="button" value="转换" onclick="main()"/>
<textarea id="result"></textarea>
</body>
</html>
htmlparse的更多相关文章
- 使用htmlparse爬虫技术爬取电影网页的全部下载链接
昨天,我们利用webcollector爬虫技术爬取了网易云音乐17万多首歌曲,而且还包括付费的在内,如果时间允许的话,可以获取更多的音乐下来,当然,也有小伙伴留言说这样会降低国人的知识产权保护意识,诚 ...
- 【vuejs深入二】vue源码解析之一,基础源码结构和htmlParse解析器
写在前面 一个好的架构需要经过血与火的历练,一个好的工程师需要经过无数项目的摧残. vuejs是一个优秀的前端mvvm框架,它的易用性和渐进式的理念可以使每一个前端开发人员感到舒服,感到easy.它内 ...
- 【vuejs深入三】vue源码解析之二 htmlParse解析器的实现
写在前面 一个好的架构需要经过血与火的历练,一个好的工程师需要经过无数项目的摧残. 昨天博主分析了一下在vue中,最为基础核心的api,parse函数,它的作用是将vue的模板字符串转换成ast,从而 ...
- HtmlParse:一款超轻量级的HTML文件解析和爬取工具
HtmlParse 是一款基于windwos平台的HTML文档解析工具,可快速构建DOM树,从而轻松实现网页元素的爬取工作.DOM树就是一个HTML文档的节点树,每个节点由:标签(Tag).属性(At ...
- Android项目---HtmlParse
在解析网站上的内容的时候,总会出现很多html的标签,一般在遇到这种数据的时候,就可以用上Html 如: content.setText(Html.fromHtml("<html> ...
- vue.js 源代码学习笔记 ----- html-parse.js
/** * Not type-checking this file because it's mostly vendor code. */ /*! * HTML Parser By John Resi ...
- R自动数据收集第二章HTML笔记1(主要关于handler处理器函数和帮助文档所有示例)
本文知识点: 1潜在畸形页面使用htmlTreeParse函数 2startElement的用法 3闭包 4handler函数的命令和函数体主要写法 5节点的丢弃,取出,取出标签名称.属性.属 ...
- R自动数据收集第一章概述——《List of World Heritage in Danger》
导包 library(stringr) library(XML) library(maps) heritage_parsed <- htmlParse("http://en ...
- Coursera-Getting and Cleaning Data-Week2-课程笔记
Coursera-Getting and Cleaning Data-Week2 Saturday, January 17, 2015 课程概述 week2主要是介绍从各个来源读取数据.包括MySql ...
随机推荐
- Day09: socket网络编程-OSI七层协议,tcp/udp套接字,tcp粘包问题,socketserver
今日内容:socket网络编程 1.OSI七层协议 2.基于tcp协议的套接字通信 3.模拟ssh远程执行命令 4.tcp的粘包问题及解决方案 5.基于udp协议的套接字 ...
- Spring boot 学习 四:spring boot 配置文件 application.yml
一 关于端口: spring boot的默认端口是8080, 如果想更改的话,在配置文件中做如下配置.ServerProperties.class会去读取这个值. server: port: 另外一种 ...
- 启用数据库 aspnetstate 会话状态
http://www.cnblogs.com/klzwj1988/archive/2010/05/10/1731723.html
- JavaScript高级程序设计学习笔记第一章
作为学习javascript的小白,为了督促自己读书,写下自己在读书时的提炼的关键点. 第一章: 1.JavaScript简史:Netscape Navigator中的JavaScript与Inter ...
- boost编译配置及简单使用
boost编译配置及简单使用 1.下载 http://www.boost.org/ 2.编译: A.解压 boost_1_55_0.zip 到boost路径 B.运行 bootstrap.bat. 会 ...
- 2013-2014回首&展望
2013年,可以说是此前18年中,最重要最感触的一年了. 和老婆相爱,考高考,入大学等等事情全都在这美妙的一年里发生了. 2013: 开心:·和老婆相爱,共同经历了大大小小的风雨·每天都有期待的东西· ...
- Json.net的常用语句JsonConvert.SerializeObject(对象)
在ajax的已不请求中,常常返回json对象.可以利用json.net给我们提供的api达到快速开发. 例子: using System;using System.Collections;using ...
- 洛谷P1602 Sramoc问题
P1602 Sramoc问题 题目描述 话说员工们整理好了筷子之后,就准备将快餐送出了,但是一看订单,都傻眼了:订单上没有留电话号码,只写了一个sramoc(k,m)函数,这什么东西?什么意思?于是餐 ...
- Fiddler设置断点修改Request和Response【转】
Fiddler设置断点修改Request和Response 设置断点的两种方式:工具栏和命令 1.工具栏:Rules -> Automatic Breakpoints(automatic [ɔː ...
- LeetCode.8-字符串转整数(String to Integer (atoi))
这是悦乐书的第349次更新,第374篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Medium级别的第4题(顺位题号是8).实现将字符串转换为整数的atoi方法. 该函数首先去掉所需丢 ...