2017-02-08 4 views
1

Я смотрю документально подтвержденный пример here, но он выполняет итерацию исключительно по дереву XML, а не по HTML. Поэтому я все еще частично запутался.GoLang - XmlPath Селекторы с HTML

Например, если бы я хотел, чтобы найти конкретный мета тег внутри головки тега по имени, кажется, я не могу? Вместо этого мне нужно найти его по порядку, указанному в заголовке . В этом случае, я хочу восьмой мета-тег, который я предполагаю, что это:

headTag, эээ: = GetByID (xmlroot "/ руководитель/мета [8] /")

Но Конечно, это использование функции getByID для имени тега, которое, как я считаю, не будет работать. Что такое полный список команд «getBy ...»?

Тогда проблема в том, как получить доступ к содержимому метатега? В документации приводятся только примеры содержимого внутреннего узла метки. Тем не менее, это будет пример работы ?:

resp.Query = EXTRACTVALUE (headTag, @content)

Селектор @ меня смущает, это уместно для этого случая?

Другими словами:

  1. Есть ли правильный пример HTML доступны?
  2. Есть ли список правильных селекторов для идентификаторов, тегов и т. Д.?
  3. Могут ли метки быть найдены по имени и содержимому, извлеченным из его внутреннего тега контента?

спасибо!

ответ

4

XPath здесь не подходит; вы должны использовать goquery, который предназначен для HTML.

Вот пример:

package main 

import (
    "fmt" 

    "github.com/PuerkitoBio/goquery" 
) 

func main() { 
    doc, err := goquery.NewDocument("https://example.com") 
    if err != nil { 
     panic(err) 
    } 
    s := doc.Find(`html > head > meta[name="viewport"]`) 
    if s.Length() == 0 { 
     fmt.Println("could not find viewpoint") 
     return 
    } 
    fmt.Println(s.Eq(0).AttrOr("content", "")) 
} 
+0

Большое спасибо! – user1679669

Смежные вопросы