"无限循环"导致无法访问的代码

时间:2016-10-09 17:04:23

标签: loops go tokenize

我目前正在尝试使用html标记符https://godoc.org/golang.org/x/net/html

所以我想要做的是:从url获取所有链接,如果url包含某个字符串 - >添加到url-list。

resp, err = client.Get("someurl")
var urls []string

if err != nil {
    log.Fatal(err)
}

z := html.NewTokenizer(resp.Body)

for {
    tt := z.Next()

    switch {
    case tt == html.ErrorToken:
        return
    case tt == html.StartTagToken:
        t := z.Token()

        isAnchor := t.Data == "a"
        if !isAnchor {
            continue
        }

        ok, url := getHref(t)
        if !ok {
            continue
        }
        if strings.Contains(url, "somestring") {
            urls = append(urls, url)
        }

    }
}

fmt.Println(urls)

自从" fmt.Println(网址)"以来,这不起作用。无法到达。循环ofc在某个时刻结束....但这不会编译。如何在循环可以访问后获取代码?

此致

2 个答案:

答案 0 :(得分:1)

循环中没有<nav> <ul> <li><a href="#">What is it?</a></li> <li> <a href="#">Inventory</a> <ul> <li> <a href="#">X-box 360</a> <ul> <li><a href="#">Building Blocks</a></li> <li><a href="#">Decorations</a></li> <li><a href="#">Redstone & Transportation</a></li> <li><a href="#">Materials</a></li> <li><a href="#">Food</a></li> <li><a href="#">Tools, Weapons & Armor</a></li> <li><a href="#">Brewing</a></li> <li><a href="#">Miscellaneous</a></li> </ul> </li> <li><a href="#">PC</a></li> <ul> <li><a href="#">Building Blocks</a></li> <li><a href="#">Decoration Blocks</a></li> <li><a href="#">Redstone</a></li> <li><a href="#">Transportation</a></li> <li><a href="#">Miscellaneous</a></li> <li><a href="#">Foodstuff</a></li> <li><a href="#">Tools</a></li> <li><a href="#">Combat</a></li> <li><a href="#">Brewing</a></li> <li><a href="#">Materials</a></li> </ul> </li> <li><a href="#">Mobile</a></li> <ul> <li><a href="#">Materials</a></li> <li><a href="#">Tools & Weapons</a></li> <li><a href="#">Decoration Blocks</a></li> <li><a href="#">Building Blocks</a></li> </ul> </li> <li><a href="#">PS4</a></li> <ul> <li><a href="#">Building Blocks</a></li> <li><a href="#">Decorations</a></li> <li><a href="#">Redstone & Transportation</a></li> <li><a href="#">Materials</a></li> <li><a href="#">Food</a></li> <li><a href="#">Tools, Weapons & Armor</a></li> <li><a href="#">Brewing</a></li> <li><a href="#">Miscellaneous</a></li> </ul> </li> </nav> 。它结束的唯一方法是通过break发送控制权出这个函数。这意味着无法访问return

试试这个:

fmt.Println(urls)

答案 1 :(得分:1)

使用他们在此处提供的示例:https://godoc.org/golang.org/x/net/html#example-Parse

修改您的代码以适应此目的:

if True == False and long_function_call():