Поиск тегов по идентификатору с 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 все же.

Другие вопросы по тегам