Поиск тегов по идентификатору с goQuery
Я хотел бы получить все теги с определенным идентификатором, используя Go. По-видимому, самый простой способ сделать это - использовать goquery.
Предположим, я ищу ul
теги с идентификатором MyTag
на сайте site
, Я хотел бы перечислить все li
содержится в таком ul
, Я никогда не использовал 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) { //MyTag will not work here
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
Бонусный вопрос: почему у каждого есть int
аргумент? Кажется, он вообще не используется
1 ответ
GoQuery использует тот же синтаксис селектора, что и jQuery/CSS. Для этого, если вы хотите найти элемент с определенным идентификатором..., вам нужно использовать хеш #
условное обозначение.
document.Find("ul#MyTag")...
При этом идентификаторы должны быть уникальными. Вы используете приведенный выше код (который я указал в предыдущем вашем вопросе) . class
(точка .
обозначения) .
Покажите нам разметку, на которой вы это используете, и я смогу точно понять, где вы ошибаетесь.
RE: Ваш бонусный вопрос. int
Аргумент - это индекс элемента внутри его родителя. Вы не должны использовать это.. это обеспечивается goquery все же.