2015-01-14 2 views
2

답변 됨. 사용자 PuerkitoBio은 그의 goquery 패키지로 나를 도와 주었고, 나는 이것을 수행하는 방법을 궁금해하는 유일한 사람이되지는 않을 것이라고 확신합니다. 클래스는 공백이 포함 된 경우 html 태그의 클래스를 찾을 goquery를 사용하는 경우 goquery를 사용하여 값에 공백이 포함 된 클래스를 찾으십시오.

(이틀 만에 '대답'나는이 질문을 표시 할 수 있습니다), 나는 문제를했다.

package main 

import (
    "fmt" 
    "github.com/PuerkitoBio/goquery" 
    "strings" 
) 

func main() { 
    html_code := strings.NewReader(` 
<html> 
    <body> 
     <h1> 
      <span class="text title">Go </span> 
     </h1> 
     <p> 
      <span class="text">totally </span> 
      <span class="post">kicks </span> 
     </p> 
     <p> 
      <span class="text">hacks </span> 
     </p> 
    </body> 
<html> 
    `) 
    doc, _ := goquery.NewDocumentFromReader(html_code) 
} 

I 클래스 "text title"를 찾으려면

, 나는 내가 이런 짓을 했을까 생각 :

doc.Find(".text title").Each(func(i int, s *goquery.Selection) { 
    class, _ := s.Attr("class") 
    fmt.Println(class, s.Text()) 
}) 

을하지만이 작동하지 않습니다 다음은 그 예입니다. (답변은 아래입니다.)

+0

아차. 머리가있어 줘서 고마워! – GreenRaccoon23

답변

4

HTML을 이해하는 데 문제가있었습니다. class="text title" 안에있는 공백은 의 값이 texttitle 인 것을 보여줍니다. goquery으로 클래스의 여러 속성을 찾으려면 공백없이 나란히 놓고 . 접두사를 사용해야합니다. 이처럼 : 내가 값 title 클래스를 찾으려면

doc.Find(".text.title").Each(func(i int, s *goquery.Selection) { 
    class, _ := s.Attr("class") 
    fmt.Println(class, s.Text()) 
}) 

, 내가 이런 짓을 했을까 또는 :

doc.Find(".title").Each(func(i int, s *goquery.Selection) { 
    class, _ := s.Attr("class") 
    fmt.Println(class, s.Text()) 
})