Library and cli-utility for extracting data from HTML via CSS selectors
Install package and command line utility:
go get -u github.com/msoap/html2data/cmd/html2data
Install package only:
go get -u github.com/msoap/html2data
FromReader(io.Reader)
- create document for parseFromURL(URL, [config URLCfg])
- create document from http(s) URLFromFile(file)
- create document from local filedoc.GetData(css map[string]string)
- get texts by CSS selectorsdoc.GetDataFirst(css map[string]string)
- get texts by CSS selectors, get first entry for each selector or ""doc.GetDataNested(outerCss string, css map[string]string)
- extract nested data by CSS-selectors from another CSS-selectordoc.GetDataNestedFirst(outerCss string, css map[string]string)
- extract nested data by CSS-selectors from another CSS-selector, get first entry for each selector or ""doc.GetDataSingle(css string)
- get one result by one CSS selectoror with config:
doc.GetData(css map[string]string, html2data.Cfg{DontTrimSpaces: true})
doc.GetDataNested(outerCss string, css map[string]string, html2data.Cfg{DontTrimSpaces: true})
doc.GetDataSingle(css string, html2data.Cfg{DontTrimSpaces: true})
:attr(attr_name)
- getting attribute instead of text, for example getting urls from links: a:attr(href)
:html
- getting HTML instead of text:get(N)
- getting n-th element from listpackage main
import (
"fmt"
"log"
"github.com/msoap/html2data"
)
func main() {
doc := html2data.FromURL("http://example.com")
// or with config
// doc := html2data.FromURL("http://example.com", html2data.URLCfg{UA: "userAgent", TimeOut: 10, DontDetectCharset: false})
if doc.Err != nil {
log.Fatal(doc.Err)
}
// get title
title, _ := doc.GetDataSingle("title")
fmt.Println("Title is:", title)
title, _ = doc.GetDataSingle("title", html2data.Cfg{DontTrimSpaces: true})
fmt.Println("Title as is, with spaces:", title)
texts, _ := doc.GetData(map[string]string{"h1": "h1", "links": "a:attr(href)"})
// get all H1 headers:
if textOne, ok := texts["h1"]; ok {
for _, text := range textOne {
fmt.Println(text)
}
}
// get all urls from links
if links, ok := texts["links"]; ok {
for _, text := range links {
fmt.Println(text)
}
}
}
html2data [options] URL "css selector"
html2data [options] URL :name1 "css1" :name2 "css2"...
html2data [options] file.html "css selector"
cat file.html | html2data "css selector"
-user-agent="Custom UA"
-- set custom user-agent-find-in="outer.css.selector"
-- search in the specified elements instead document-json
-- get result as JSON-dont-trim-spaces
-- get text as is-dont-detect-charset
-- don't detect charset and convert text-timeout=10
-- setting timeout when loading the URLDownload binaries from: releases (OS X/Linux/Windows/RaspberryPi)
Or install from homebrew (MacOS):
brew tap msoap/tools
brew install html2data
# update:
brew upgrade html2data
Using snap (Ubuntu or any Linux distribution with snap):
# install stable version:
sudo snap install html2data
# install the latest version:
sudo snap install --edge html2data
# update
sudo snap refresh html2data
From source:
go get -u github.com/msoap/html2data/cmd/html2data
Get title of page:
html2data https://golang.org/ title
Last blog posts:
html2data https://blog.golang.org/ h3
Getting RSS URL:
html2data https://blog.golang.org/ 'link[type="application/atom+xml"]:attr(href)'
More examples from wiki.
小编典典 数据URI的特征 甲数据-URI与MIME类型text/html必须是在其中一种格式: data:text/html, data:text/html;charset=UTF-8, 不需要Base-64编码。如果您的代码包含非ASCII字符,例如éé,charset=UTF-8则必须添加。 必须转义以下字符: #-Firefox和Opera将这个字符解释为哈希标记(如所示location.
HTML5增加了一项新功能是自定义数据属性,也就是data-*自定义属性。在HTML5中我们可以使用以data-为前缀来设置我们需要的自定义属性,来进行一些数据的存放。当然高级浏览器下可通过脚本进行定义和数据存取。在项目实践中非常有用。目前采取这样的做法的框架也有很多,最常见的当属jQueryMobile。 具体使用方法例下: <div id = "head" data-home = "http:
data-* 属性是 HTML 5 的新特性,允许用户在 DOM 中存储自定义信息。 以前,需要存储含有特定含义的信息通常是通过 class 完成的,但这并不是 class 本来的用途。现在,利用 HTML 5,可以为元素添加data-*属性,从而存储自定义信息。其中*是可以自定义的部分。例如: <article id="tu" data-category="Web Development" da
data-* 属性是 HTML5 中的新属性。 定义和用法 (1)data-* 属性用于存储页面或应用程序的私有自定义数据。 (2)data-* 属性赋予我们在所有 HTML 元素上嵌入自定义 data 属性的能力。 存储的(自定义)数据能够被页面的 JavaScript 中利用,以创建更好的用户体验(不进行 Ajax 调用或服务器端数据库查询)。 data-* 属性包括两部分: (1)属性名不应
在HTML5中添加了data-*的方式来自定义属性,所谓data-*实际上上就是data-前缀加上自定义的属性名,命名可以用驼峰命名方式,但取值是必需全部使用小写(后面会说),使用这样的结构可以进行数据存放。使用data-*可以解决自定义属性混乱无管理的现状。 1. Html绑定数据写法 1.1简单单词: <div id="testDiv" data-cd="24"> Click He
原文地址: Using the jQuery Validate Plugin with HTML5 Data Attribute Rules The jQuery Validation Plugin 是一个非常非常好用的插件. 和 ASP.NET MVC uses the plugin for client side validation一样好用! 他有个非常好用的 JavaScript API
HTML5中的data-*属性 我们往往会根据需要在HTML标记上添加自定义的属性来存储和操作数据,我们自定义的属性名字也千奇百怪,五花八门。我们可以通过原生的 getAttribute()或jQuery中的.attr()来获取我们自定义的属性。但是前端技术在向着规范化前进。HTML5标准规定,自定义的属性都已data—*开头,这样就区分开了固有属性和自定义属性。HTML代码如下: <div id
$(this).attr("data-id") // will return the string "123" or .data() (if you use newer jQuery >= 1.4.3) $(this).data("id") // will return the number 123 注: 1.两种方法 ①使用attr方法获得data-*的值 $(this).attr('data-
下面是代码实例。 html这里 <a href="#"> <i class="fa fa-building-o"></i> <span class="groups" data-url="{{URL('inext-admin/summary/groups/'.$group['id'].'/systems')}}">{{$group['name']}} </span> <span class="pul
<a class="user_vip" data-type="2" data-name="我的名字" href="#">点击</a> $('.user_vip').on('click', function () { // 方法一、 var type = $(this).data('type'); var name= $(thi
The supplied data appears to be in the OLE2 Format. You are calling the part of POI that deals with OOXML (Office Open XML) Documents. You need to call a different part of POI to process this data (eg
场景: data-* 属性用于存储页面或应用程序的私有自定义数据。 data-* 属性赋予我们在所有 HTML 元素上嵌入自定义 data 属性的能力。 存储的(自定义)数据能够被页面的 JavaScript 中利用,以创建更好的用户体验(不进行 Ajax 调用或服务器端数据库查询)。 data-* 属性包括两部分: 属性名不应该包含任何大写字母,并且在前缀 "data-" 之后必须有至少一个字符