本文整理汇总了Golang中golang.org/x/net/html.Parse函数的典型用法代码示例。如果您正苦于以下问题:Golang Parse函数的具体用法?Golang Parse怎么用?Golang Parse使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Parse函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: fetchMoreHistory
func (y *Youtube) fetchMoreHistory(moreHref string) (more, content *html.Node, err error) {
moreURL := "https://www.youtube.com" + moreHref
moreReq, err := http.NewRequest("GET", moreURL, nil)
if err != nil {
return nil, nil, err
}
resp, err := y.s.Do(moreReq)
if err != nil {
return nil, nil, err
}
defer resp.Body.Close()
var jsonDoc struct {
Content string `json:"content_html"`
More string `json:"load_more_widget_html"`
}
if err := json.NewDecoder(resp.Body).Decode(&jsonDoc); err != nil {
return nil, nil, err
}
content, err = html.Parse(bytes.NewBufferString(jsonDoc.Content))
if err != nil {
return nil, nil, err
}
more, _ = html.Parse(bytes.NewBufferString(jsonDoc.More))
return
}
开发者ID:unixpickle,项目名称:gscrape,代码行数:29,代码来源:youtube.go
示例2: scrape
func scrape(cliaoke_dir string) error {
base_uri := "http://www.albinoblacksheep.com/audio/midi/"
response, err := http.Get(base_uri)
if err != nil {
return errors.New("Couldn't fetch base content: " + err.Error())
}
defer response.Body.Close()
doc, err := html.Parse(response.Body)
if err != nil {
return errors.New("Couldn't understand document body: " + err.Error())
}
for _, option := range get_options(doc) {
slug := get_value(option)
// log.Println(option)
if slug != "" {
var embed *html.Node
page := base_uri + "/" + slug
// log.Println(page)
err := func() error {
response, err := http.Get(page)
if err != nil {
return errors.New("Error fetching page " + page + ": " + err.Error())
}
defer response.Body.Close()
slugdoc, err := html.Parse(response.Body)
if err != nil {
return errors.New("Error parsing page " + page + ": " + err.Error())
}
embed = get_embed(slugdoc)
return nil
}()
if err != nil {
return err
}
var file_url string
for _, r := range embed.Attr {
if r.Key == "src" {
err = nil
file_url = r.Val
goto SKIP_ERR
}
}
return errors.New("No src attribute found in embed in page " + page)
SKIP_ERR:
if err = download_file(cliaoke_dir, file_url); err != nil {
return err
}
}
}
return nil
}
开发者ID:mkb218,项目名称:go-cli-aoke,代码行数:54,代码来源:scrape.go
示例3: getNodeWithCharset
func getNodeWithCharset(source []byte) (*html.Node, error) {
n, err := html.Parse(bytes.NewReader(source))
if err != nil {
return nil, err
}
charset := getCharset(n)
if charset == CS_UTF8 {
return n, nil
}
data := convertString(string(source), charset, CS_UTF8)
n, err = html.Parse(bytes.NewReader([]byte(data)))
return n, err
}
开发者ID:chzyer,项目名称:pocket,代码行数:15,代码来源:handler.go
示例4: Parse
// Parse a tree from r.
func Parse(r io.Reader) (*Node, error) {
dom, err := html.Parse(r)
if err != nil {
return nil, err
}
return Convert(dom), nil
}
开发者ID:arnehormann,项目名称:hck,代码行数:8,代码来源:nodes.go
示例5: urlToNode
func urlToNode(url string, client *http.Client, redirect int) (*html.Node, error) {
if redirect >= MAX_REDIRECT {
return nil, fmt.Errorf("Too many canonical redirection at %s", url)
}
resp, err := client.Get(url)
if err != nil {
return nil, err
}
defer resp.Body.Close()
if resp.StatusCode != 200 {
if resp.StatusCode < 500 {
return nil, nil
} else {
return nil, fmt.Errorf("Server returns %d code (url: %s).", resp.StatusCode, url)
}
}
root, err := html.Parse(resp.Body)
if err != nil {
return nil, err
}
s := getCanonicalUrl(root)
if s != "" && s != url {
return urlToNode(s, client, redirect+1)
}
return root, err
}
开发者ID:speedland,项目名称:apps,代码行数:28,代码来源:importer.go
示例6: Extract
func Extract(url string) ([]string, error) {
resp, err := http.Get(url)
if err != nil {
return nil, err
}
if resp.StatusCode != http.StatusOK {
resp.Body.Close()
return nil, fmt.Errorf("getting %s: %s", url, resp.Status)
}
doc, err := html.Parse(resp.Body)
resp.Body.Close()
if err != nil {
return nil, fmt.Errorf("parsing %s as HTML: %v", url, err)
}
var links []string
visitNode := func(n *html.Node) {
if n.Type == html.ElementNode && n.Data == "a" {
for _, a := range n.Attr {
if a.Key != "href" {
continue
}
link, err := resp.Request.URL.Parse(a.Val)
if err != nil {
continue
}
links = append(links, link.String())
}
}
}
forEachNode(doc, visitNode, nil)
return links, nil
}
开发者ID:thbf,项目名称:marina,代码行数:34,代码来源:links.go
示例7: title
func title(url string) error {
resp, err := http.Get(url)
if err != nil {
return err
}
// Check Content-Type is HTML (e.g., "text/html; charset=utf-8").
ct := resp.Header.Get("Content-Type")
if ct != "text/html" && !strings.HasPrefix(ct, "text/html;") {
resp.Body.Close()
return fmt.Errorf("%s has type %s, not text/html", url, ct)
}
doc, err := html.Parse(resp.Body)
resp.Body.Close()
if err != nil {
return fmt.Errorf("parsing %s as HTML: %v", url, err)
}
title, err := soleTitle(doc)
if err != nil {
return err
}
fmt.Println(title)
return nil
}
开发者ID:yyBeta,项目名称:gopl,代码行数:25,代码来源:16title3.go
示例8: TestWhitelist
func TestWhitelist(t *testing.T) {
originalHTML := `<html><head></head><body>0<1<p id="A" foo="abc"def">` +
`2<b empty="">3</b><i backslash="\">&4</i></p>` +
`5<blockquote></blockquote><br/>6</body></html>`
originalHTMLAsBuffer := bytes.NewBufferString(originalHTML)
rootNode, err := html.Parse(originalHTMLAsBuffer)
if err != nil {
t.Fatal(err)
}
dummyAttributeArray := []htmlrender.MinimalHtmlNode{
{
Data: "blockquote",
},
}
w := new(bytes.Buffer)
want := `<blockquote></blockquote>`
if err := Whitelist(w, rootNode, dummyAttributeArray); err != nil {
t.Fatal(err)
}
if got := w.String(); got != want {
t.Errorf("got vs want:\n%s\n%s\n", got, want)
}
}
开发者ID:blast-analytics-marketing,项目名称:htmlrender,代码行数:29,代码来源:whitelist_test.go
示例9: outline
func outline(url string) error {
resp, err := http.Get(url)
if err != nil {
return err
}
defer resp.Body.Close()
doc, err := html.Parse(resp.Body)
if err != nil {
return err
}
var depth int
forEachNode(doc,
func(n *html.Node) {
if n.Type == html.ElementNode {
fmt.Printf("%*s<%s>\n", depth*2, "", n.Data)
depth++
}
},
func(n *html.Node) {
if n.Type == html.ElementNode {
depth--
fmt.Printf("%*s</%s>\n", depth*2, "", n.Data)
}
})
return nil
}
开发者ID:yksz,项目名称:go-training,代码行数:29,代码来源:outline.go
示例10: Parse
func Parse(r io.Reader) (*Node, error) {
n, err := html.Parse(r)
if err != nil {
return nil, err
}
return NewNode(n), nil
}
开发者ID:h12w,项目名称:html-query,代码行数:7,代码来源:node.go
示例11: getRootNode
func getRootNode(urlToOpen string) *xmlpath.Node {
req, err := http.NewRequest("GET", urlToOpen, nil)
if err != nil {
log("error1: " + err.Error())
} else {
response, err := http.DefaultTransport.RoundTrip(req)
if err != nil {
log("Error 3: " + err.Error())
} else {
defer response.Body.Close()
content, err := ioutil.ReadAll(response.Body)
if err != nil {
log("Error 2: " + err.Error())
} else {
root, err := html.Parse(bytes.NewReader(content))
if err != nil {
log("Parse error: " + err.Error())
}
var b bytes.Buffer
html.Render(&b, root)
fixedHtml := b.String()
reader := strings.NewReader(fixedHtml)
rootNode, err := xmlpath.ParseHTML(reader)
if err != nil {
log("Error 4: " + err.Error())
} else {
return rootNode
}
}
}
}
return nil
}
开发者ID:Pinperepette,项目名称:opparis,代码行数:35,代码来源:cosmiccat.twitterbot.go
示例12: TestHtmlTagCount
func TestHtmlTagCount(t *testing.T) {
var tests = []struct {
args string
want map[string]int
}{
{`<html><head></head><body><a href="foo">Foo</a></body></html>`, map[string]int{"html": 1, "head": 1, "body": 1, "a": 1}},
{`<html><head></head><body><ul><li><a href="/foo">Foo</a></li><li><a href="/bar">Bar</a></li></ul></body></html>`, map[string]int{"html": 1, "head": 1, "body": 1, "a": 2, "ul": 1, "li": 2}},
{`<html><head></head><body><ul><li><a href="/foo">Foo</a></li><li><a href="/bar">Bar</a></li></ul><ul><li><a href="/hoge">Hoge</a></li><li><a href="/piyo">Piyo</a></li></ul></body></html>`, map[string]int{"html": 1, "head": 1, "body": 1, "a": 4, "ul": 2, "li": 4}},
}
for _, test := range tests {
descr := fmt.Sprintf("htmlTagCount(%q)", test.args)
doc, err := html.Parse(strings.NewReader(test.args))
if err != nil {
log.Fatal(err)
}
var counts map[string]int
counts = map[string]int{}
htmlTagCount(counts, doc)
if !reflect.DeepEqual(counts, test.want) {
t.Errorf("%s", descr)
t.Errorf("got")
for tagName, tagCount := range counts {
t.Errorf("tagName = %s, tagCount = %d", tagName, tagCount)
}
t.Errorf("expect")
for tagName, tagCount := range test.want {
t.Errorf("tagName = %s, tagCount = %d", tagName, tagCount)
}
}
}
}
开发者ID:sonedazaurus,项目名称:golang-training,代码行数:32,代码来源:main_test.go
示例13: GetParameters
func GetParameters(client *http.Client, site string) error {
url, err := url.ParseRequestURI(site)
if err != nil {
return err
}
url.Path = "/parameters/profile/all"
respBody, err := DoRequest(client, url, "GET", nil, nil)
if err != nil {
return err
}
defer respBody.Close()
doc, err := html.Parse(respBody)
if err != nil {
return err
}
if verbose {
fmt.Println("HTML doc parsed ok", "type:", doc.Type, "data:", doc.Data)
}
err = CheckHtml(doc, PARAMETERS_PAGE_TITLE)
if err != nil {
return err
}
return nil
}
开发者ID:CadeLaRen,项目名称:traffic_control,代码行数:31,代码来源:systemtest.go
示例14: ParseMessage
func (u *URLMod) ParseMessage(msg *gochat.Message, c *gochat.Channel) string {
url := u.Re.FindString(msg.Text)
response, err := http.Get(url)
if err != nil {
return "Error, could not get URL!"
} else {
defer response.Body.Close()
doc, _ := html.Parse(response.Body)
var f func(*html.Node, bool)
var re string
f = func(n *html.Node, pt bool) {
if pt && n.Type == html.TextNode {
re = string("Link Title: " + n.Data)
return
}
pt = pt || (n.Type == html.ElementNode && n.Data == "title")
for c := n.FirstChild; c != nil; c = c.NextSibling {
f(c, pt)
}
}
f(doc, false)
return re
}
//return ""
}
开发者ID:Luminarys,项目名称:gochat,代码行数:25,代码来源:url_title.go
示例15: main
func main() {
doc, err := html.Parse(os.Stdin)
if err != nil {
log.Fatal(err)
}
printTextNodes(doc)
}
开发者ID:Derek701,项目名称:gopl-solutions,代码行数:7,代码来源:ex5-3.go
示例16: main
func main() {
url := "https://candypot.jp/summaries/1050"
response, err := http.Get(url)
if err != nil {
fmt.Println(err)
} else {
if response.StatusCode == 200 {
fmt.Println(response.Header["Content-Type"])
body, _ := ioutil.ReadAll(response.Body)
doc, err := html.Parse(strings.NewReader(string(body)))
if err != nil {
} else {
var f func(*html.Node)
f = func(n *html.Node) {
if n.Type == html.ElementNode && n.Data == "h2" {
fmt.Printf("%q\n", n.FirstChild.Data)
}
for c := n.FirstChild; c != nil; c = c.NextSibling {
f(c)
}
}
f(doc)
}
}
}
}
开发者ID:kakawamura,项目名称:golang,代码行数:31,代码来源:ikinuki.go
示例17: TestVisit
func TestVisit(t *testing.T) {
tests := []struct {
s string
want []string
}{
{
"<a href='link1'><a href='link2'>",
[]string{"link1", "link2"},
}, {
"<div><a href='link1'><a href='link2'></div><a href='link3'>",
[]string{"link1", "link2", "link3"},
},
}
for _, test := range tests {
n, err := html.Parse(strings.NewReader(test.s))
if err != nil {
t.Errorf("parse failure: %v", err)
}
got := visit([]string{}, n)
if !reflect.DeepEqual(got, test.want) {
t.Errorf("Expected:%v Actual:%v", test.want, got)
}
}
}
开发者ID:ysohta,项目名称:gopl-ex,代码行数:25,代码来源:main_test.go
示例18: title
// title inspects the Content-Type header of the server's response
// and returns an error if the document is not html
func title(url string) error {
resp, err := http.Get(url)
if err != nil {
return err
}
defer resp.Body.Close()
ct := resp.Header.Get("Content-Type")
if ct != "text/html" && !strings.HasPrefix(ct, "text/html;") {
return fmt.Errorf("%s has type %s, not text/html", url, ct)
}
doc, err := html.Parse(resp.Body)
if err != nil {
return fmt.Errorf("parsing %s as HTML: %v", url, err)
}
visitNode := func(n *html.Node) {
if n.Type == html.ElementNode && n.Data == "title" &&
n.FirstChild != nil {
fmt.Println(n.FirstChild.Data)
}
}
forEachNode(doc, visitNode, nil)
return nil
}
开发者ID:mukulrawat1986,项目名称:play,代码行数:29,代码来源:main.go
示例19: main
func main() {
if len(os.Args) < 3 {
fmt.Println("Usage: ./ex17 http://example.com")
os.Exit(1)
}
resp, err := http.Get(os.Args[1])
if err != nil {
fmt.Println(err)
os.Exit(1)
}
if resp.StatusCode != http.StatusOK {
resp.Body.Close()
fmt.Println("Get Error")
os.Exit(1)
}
doc, err := html.Parse(resp.Body)
resp.Body.Close()
if err != nil {
fmt.Println(err)
os.Exit(1)
}
nodes := ElementsByTagName(doc, os.Args[2:]...)
for i, value := range nodes {
fmt.Printf("%d: Data = %s \n", i, value.Data)
}
}
开发者ID:sonedazaurus,项目名称:golang-training,代码行数:26,代码来源:main.go
示例20: Links
// Links returns the absolute URLs of all references from an URL of a webpage.
func Links(u string) ([]string, error) {
s := newSelection("a[href]", u)
link, err := url.Parse(s.URL)
if err != nil {
return nil, err
}
r, err := http.Get(link.String())
if err != nil {
return nil, err
}
defer r.Body.Close()
doc, err := html.Parse(r.Body)
if err != nil {
return nil, err
}
sel, err := cascadia.Compile(s.Selector)
if err != nil {
return nil, err
}
matches := sel.MatchAll(doc)
var result []string
for _, m := range matches {
r, err := resolveURL(hrefString(m), link)
if err != nil {
return nil, err
}
result = append(result, r)
}
return result, nil
}
开发者ID:hariharan-uno,项目名称:extract,代码行数:31,代码来源:extract.go
注:本文中的golang.org/x/net/html.Parse函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论