我目前正在尝试使用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在某个时刻结束....但这不会编译。如何在循环可以访问后获取代码?
此致
答案 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():