整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

HtmlParse:一款超轻量级的HTML文件解析和爬取工具

tmlParse 是一款基于windwos平台的HTML文档解析工具,可快速构建DOM树,从而轻松实现网页元素的爬取工作。DOM树就是一个HTML文档的节点树,每个节点由:标签(Tag)、属性(Attribute)、文本(Text)三个值来描述。

所谓的HTML文档解析,指的就是如何构建一颗DOM树,只有成功构建出DOM树,才有可能进行后续的数据爬取和分析工作。显然,构建DOM树是比较复杂的过程,因为不是每一个HTML文档都会严格按照规范来书写,因此解析过程需要具有一定容错能力。此外,解析效率也是一个需要考虑的因素,也就是说最好通过一次文档扫描即可建立起DOM树,而不是反复扫描。

下面是HtmlParse介绍。

工具特点

1、绿色纯天然,无任何第三方依赖库,文件大小不到150K; 2、解析速度快,具有一定的HTML语法容错能力,可快速将HMTL文档解析为DOM树; 3、基于命令行参数,可通过不同参数获取指定TAG的属性值和文本内容,从而实现网页爬取功能; 4、可将爬取数据输出为json格式,方便第三方程序进一步分析和使用; 5、可爬取script脚本到指定的js文件中;

下载地址:http://softlee.cn/HtmlParse.zip

使用方法

HtmlParse HtmlPathFile -tag TagName [-attr] [Attribute] [-o] [JsonPathFile]

解析指定的HTML文档,并将文档中指定的标签及属性输出到指定文件中。

HtmlPathFile:必选参数,要解析的HTML文档路径名,如果文件路径中有空格,可使用双引号将文件路径包含;

-tag:必选参数,用于指定要抓取的HTML标签名称; -attr:可选参数,用于指定标签的属性值,如果不指定,则返回该标签的所有属性值; -o:可选参数,用于指定抓取内容输出的文件,可将抓取的内容保存为json格式的文件。 如果该参数不指定,则进行控制台输出。 如果抓取的是script、style则会保存为js格式文件。

如果要抓取doctype,可使用-tag doctype,将整个doctype内容获取。此时将会忽略-attr指定的任何属性值。

举例说明

1、爬取网页中所有超链接

HtmlParse c:/sina.html -tag a -attr href -o c:/sina.json

解析C盘下的sina.html文档,并提取该文档中的所有超链接到sina.json文件中。其中**-tag a -attr href,用于指定获取超链接标签ahref**属性。

2、爬取网页中所有图片链接

HtmlParse c:/sina.html -tag img -attr src -o c:/sina.json

解析C盘下的sina.html文档,并提取该文档中的所有图片链接到sina.json文件中。

3、爬取网页中所有脚本

HtmlParse c:/sina.html -tag script -o c:/sina.js

解析C盘下的sina.html文档,并提取该文档中的所有脚本函数到sina.js文件中。

输出内容

如果通过-o参数指定输出文件,则会生成一个json格式的文档。 TagName为爬取的标签名称,比如超链接的a,其值是一个json数组,数组中的每个内容为Json对象,每个Json对象,有属性和文本构成。如果-attr 指定了要爬取的属性,则AttrName为指定的属性名称,比如href或src。text为该标签的文本内容,有些标签不存在文本内容,比如img、meta等,则该值为空。json格式如下:

{
  "TagName":
  {
     {"AttrName":"AttrValue1", "text":"text1"}
     {"AttrName":"AttrValue1", "text":"text2"}
  }
}

下面是一个sina网页的所有超链接json

{
 "a": [{
  "href": "javascript:;",
  "text": "设为首页"
 }, {
  "href": "javascript:;",
  "text": "我的菜单"
 }, {
  "href": "https://sina.cn/",
  "text": "手机新浪网"
 }, {
  "href": "",
  "text": "移动客户端"
 }, {
  "href": "https://c.weibo.cn/client/guide/download",
  "text": "新浪微博"
 }, {
  "href": "https://so.sina.cn/palmnews/web-sinanews-app-download.d.html",
  "text": "新浪新闻"
 }, {
  "href": "https://finance.sina.com.cn/mobile/comfinanceweb.shtml",
  "text": "新浪财经"
 }, {
  "href": "https://m.sina.com.cn/m/sinasports.shtml",
  "text": "新浪体育"
 }, {
  "href": "https://tousu.sina.com.cn/about_app/index?frompage=heimaopc",
  "text": "黑猫投诉"
 }, {
  "href": "http://blog.sina.com.cn/lm/z/app/",
  "text": "新浪博客"
 }, {
  "href": "https://games.sina.com.cn/o/kb/12392.shtml",
  "text": "新浪游戏"
 }, {
  "href": "https://zhongce.sina.com.cn/about/app",
  "text": "新浪众测"
 }, {
  "href": "https://mail.sina.com.cn/client/mobile/index.php?suda-key=mail_app&suda-value=login",
  "text": "新浪邮箱客户端"
 }, {
  "href": "javascript:;",
  "text": "关闭置顶"
 }, {

来源:https://www.cnblogs.com/softlee/p/16374079.html

前推荐过一些不错的在线工具网站,不过这类网站都不易存活,比较容易去世,但是每一个网站的功能都不错,在比较赶的情况下能发挥大作用。

这个网站叫兔二工具网,先前的界面和其他工具聚合网的区别不大,目前改版了,对功能分类进行了调整,相比起之前,整体的UI界面变化比较大,并且也精致了一些。但总体上感觉并没有什么特色,似乎是参照了一些非浏览器自带导航网站的设计。

网站中将功能分成了六个大类,即:精品专区、企鹅专区、音乐专区、世俗风水、编程开发、网页制作。

别看有这么多功能分类,其实我们能够用到的也就只有前三个,世俗风水之类的看看就好,而编程之类的基本上就是专业人员的工具了,网页制作日常用得少,做生日祝福可以试试。

网站的开头部分是一个搜索框,输入关键词,能够快速在不同平台搜索同一个内容,以提升搜索效率。

再下面就是精品专区这个分栏所对应的小工具了。

这里面提供了许多正经和不正经的小工具,从小派这个骨灰级实用主义者的角度来说的话,有用的功能是:短视频解析、高清壁纸库、随机壁纸、云盘密码查询、三合一收款码这几个。

短视频解析这个工具能够解析的平台大概只包括抖音、快手、皮皮虾、哔哩哔哩等国内常用短视频平台。

这个是高清壁纸库,虽然界面设计得很简陋,但是里面的图片还不错,风景图都很美,另外就是右上角还能够找到其他来源的壁纸。

个人觉得随机壁纸可能会比这个壁纸库更容易找到你想要的壁纸,因为随机壁纸生成中有一个分类选项,而壁纸库里并没有对壁纸进行分类。

云盘密码查询是根据全网公开分享的网盘链接及提取码来查询密码的,所以不能保证每一个链接都能找到对应的提取码。

企鹅专区就不多说了,看上面的功能就知道是干啥的,懂自懂。

音乐专区就两个功能:音乐搜索解析和全网音乐下载。

音乐搜索解析能够通过链接地址、ID、歌曲名以及歌手解析网易云、QQ音乐、咪咕、酷狗等平台的音乐。

全网音乐下载则接入了一个能够直接下载歌曲的音乐库,方便快捷。

其他专区就不再多说了,大家自己探索吧!

网址:https://www.tool22.com/


TML即一切,所有打算进行Web编程的人都应该熟悉HTML,并了解如何解析HTML。尤其对前端工程师来说这更是基础,本文我们就来介绍一下JS下常见的HTML解析库。

DOMParser

JavaScript和jQuery的DOM操作功能非常适合简单HTML片段的解析。在实际编程中,如果要以编程方式解析DOM完整HTML或XML,则需要一个更好的解决方案,那就是DOMParser,它是所有现代数浏览器都支持的功能。

通过使用DOMParser,可以轻松解析HTML文档。但是,一般需要通过欺骗浏览器来实现解析,比如,通过向当前文档添加新元素。

DOMParser的用法非常简单明了:

let domParser = new DOMParser();
let doc = domParser.parseFromString(stringContainingXMLSource, "application/xml");
domParser = new DOMParser();
doc = domParser.parseFromString(stringContainingSVGSource, "image/svg+xml");
domParser = new DOMParser();
doc = domParser.parseFromString(stringContainingHTMLSource, "text/html");


Cheerio

专为服务器设计的核心jQuery的快速,灵活和精致的实现。

Cheerio看起来像jQuery,但是不支持浏览器。Cheerio可以解析HTML并使其易于操作,但不会像浏览器中那样解释HTML,解析出与浏览器不同的内容,并且解析的结果不会直接发送给用户。

Cheerio实现了jQuery子集,去掉了jQuery中所有与DOM不一致或者是用来填补浏览器的东西,重现了jQuery最美妙的API

由于使用了极其简洁而又标准的DOM模型, Cheerio对文档的转换,操作,渲染都极其的高效。

JavaScript开发人员都应该熟悉Cheerio的语法和用法:

var chro = require('cheerio'),
$ = chio.load('<h1 class="title">Hello World!</h1>');
$('h1.title').text('Hello Chongchong!');
$('h1').attr('id', 'welcome');
$.html();
结果:
<h1 class="title" id=" welcome ">Hello Chongchong!</h1>

jsdom

jsdom是很多Web标准(尤其是WHATWG DOM和 HTML 标准)纯JavaScript实现,可与Node.js结合使用。jsdom项目的目标是模拟Web浏览器的子集,从而满足测试和抓取实际的Web应用程序。

jsdom不仅仅是HTML解析器,它还可以当成浏览器。在解析的上下文中,如果要解析的数据中省略了必要的标记,它会自动添加必要的标记。例如,如果没有html标签,它将像浏览器一样隐式地添加它。

还可以选择指定一些属性,例如文档,引荐来源网址或用户代理的URL。如果需要解析包含本地URL的链接,则该URL特别有用。

由于它实际上与解析无关,因此只提到jsdom具有(虚拟)控制台,对cookie的支持等。总之,需要模拟浏览器环境

它还可以处理外部资源。如有需求jsdom可以用来加载并执行JS脚本。

const jsdom = require("jsdom");
const { JSDOM } = jsdom;
const dom = new JSDOM('<!DOCTYPE html><p>Hello, Chongchong!</p>');
console.log(dom.window.document.querySelector("p").textContent);

结果:

"Hello, Chongchong!"


parse5

parse5提供了处理HTML时所需的几乎所有内容。Parse5库,目标是构建其他工具,但也可以实现HTML解析以完成简单任务。Parse5易于使用,但是并不提供浏览器为提供的操作DOM的方法(例如getElementById)。

parse5衍生出了一系列采用它的令人印象深刻的项目:jsdom,Angular2和Polymer。如果需求为对HTML的高级操作或解析的可靠基础,那么显然这是一个不错的选择。

const parse5 = require('parse5');

const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hello Chongchong!</body></html>');

console.log(document.childNodes[1].tagName);

总结

本文我们介绍几个JS下常见的Html解析库。根据标准,实际的HTML格式语法格式是需要容错的。当时这在库很难简单完美的实现。如果你有更好的推荐,欢迎和大家一起分享。