英文:
Search tags by id with goQuery
问题
我想使用Go语言检索具有特定id的所有标签。显然,在Go中最简单的方法是使用goquery。
假设我正在查找网站site
中具有id为MyTag
的ul
标签。我想列出该ul
中包含的所有li
标签。我以前从未使用过jQuery,所以感到有点迷茫。
resp, _ := http.Get(site)
httpBody := resp.Body
node, _ := html.Parse(httpBody)
document := goquery.NewDocumentFromNode(node)
document.Find("ul#MyTag").Each(func(i int, ul *goquery.Selection) {
ul.Find("li").Each(func(i int, li *goquery.Selection) {
...
})
})
更具体地说,我的HTML如下所示:
<html>
<body>
<ui id="yes">
<li key="1">a</li>
<li key="2">b</li>
<li key="3">c</li>
<li key="4">d</li>
</ui>
<ui id="no">
<li key="1">11</li>
<li key="2">22</li>
<li key="3">33</li>
<li key="4">44</li>
</ui>
</body>
</html>
我想要获取键1,2,3,4
。
额外问题:为什么Each
函数有一个int
参数?它似乎根本没有被使用。
英文:
I would like to retrieve all the tags with a specific id using Go. Apparently the easiest way to do that is go is to use goquery.
Assume I am looking for ul
tags with id MyTag
in a website site
. I would like to list all the li
contained in such a ul
. I never used jQuery before so I feel a little lost.
resp, _ := http.Get(site)
httpBody := resp.Body
node, _ := html.Parse(httpBody)
document := goquery.NewDocumentFromNode(node)
document.Find("ul.MyTag").Each(func(i int, ul *goquery.Selection) { //MyTag will not work here
ul.Find("li").Each(func (i int, li *goquery.Selection){
...
})
})
More specitically, my html looks like
<html>
<body>
<ui id="yes">
<li key="1">a</li>
<li key="2">b</li>
<li key="3">c</li>
<li key="4">d</li>
</ui>
<ui id="no">
<li key="1">11</li>
<li key="2">22</li>
<li key="3">33</li>
<li key="4">44</li>
</ui>
</body>
</html>
and I would like to retreive the keys 1,2,3,4
Bonus question: why Each has an int
argument? It doesn't seem to be used at all
答案1
得分: 8
GoQuery使用与jQuery/CSS相同的选择器语法。因此,如果您想要找到具有特定ID的元素..那么您需要使用哈希#
符号。
document.Find("ul#MyTag")...
话虽如此,ID应该是唯一的。您正在使用的上述代码(我在您之前的问题中提供的)..通过class
(点.
符号)进行搜索。
请向我们展示您在其中使用此代码的标记,我将能够准确地看到您出了什么问题。
关于您的奖励问题。int
参数是元素在其父级中的索引。您不一定要使用它..不过goquery提供了它。
英文:
GoQuery uses the same selector syntax as jQuery/CSS. To that end, if you want to find an element with a specific ID .. then you need to use a hash #
symbol.
document.Find("ul#MyTag")...
That being said, ID's are supposed to be unique. The above code you're using (that I provided in a previous question of yours) .. searches by class
(the dot .
notation).
Show us the markup you're using this on and I will be able to see exactly where you're going wrong.
RE: Your bonus question. The int
argument is the index of the element within its parent. You don't have to use it.. it is provided by goquery though.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论