标签:htm   输出   main   ret   维数   dom   style   ack   string   
利用goquery读取html中指定ID的数据保存至二维数组中。
代码如下:
 1 package main
 2 
 3 import (
 4     "fmt"
 5     "log"
 6     "strings"
 7     "io"
 8 
 9     "github.com/PuerkitoBio/goquery"
10 )
11 
12 func main() {
13     html := `
14     
15     
"mydata">
16         "one">
17             | one | 
18             two | 
19             three | 
20         
21         "two">
22             | 3 | 
23             4 | 
24             5 | 
25         
26         "three">
27             | 八 | 
28             九 | 
29             十 | 
30         
31         "four">
32             | 百 | 
33             千 | 
34             万 | 
35         
36         "five">
37             | 100 | 
38             200 | 
39             300 | 
40         
41     
42     
43     
44     `
45 
46     var table [][]string = GetHtmlTableData(strings.NewReader(html), 
"#mydata")
47 
48     fmt.Println(table)
49 
50     for trkey,tr :=
 range table {
51         for tdkey, _ :=
 range tr{
52             fmt.Println(table[trkey][tdkey])
53         }
54     }
55 }
56 
57 func GetHtmlTableData(html io.Reader, tableId string) (table [][]string) {
58     var tableCache [][]string
59 
60     dom,err:=
goquery.NewDocumentFromReader(html)
61     if err !=
 nil{
62         log.Fatalln(err)
63     }
64 
65     trNum := dom.Find(
"table"+tableId).Find(
"tr").Length()
66     tdNum := dom.Find(
"table"+tableId).Find(
"tr").Find(
"td").Length()
67 
68     tableCache =
 make([][]string, trNum, trNum)
69     for i:=0; i
{
70     tableCache[i] = make([]string, tdNum/trNum, tdNum/trNum)
71         for j:=0; j {
72             tableCache[i][j] = dom.Find(tableId).Find("tr").Find("td").Eq(i*(tdNum/trNum)+j).Text()
73         }
74     }
75 
76     return tableCache
77 }
 
输出结果如下:

 
Golang读取HTML中Table数据到二维数组
标签:htm   输出   main   ret   维数   dom   style   ack   string   
原文地址:https://www.cnblogs.com/merrynuts/p/13130204.html