我想用这个网站做的计算:http://www.isewase.de/dwz/.
因此,当我在网站上输入数据时,我判断了POST请求,例如:
dwz_name: 1000-100
geb: 1990
punkte: 1
dwz[]: 1300
dwz[]: 1400
dwz[]:
dwz[]:
dwz[]:
dwz[]:
dwz[]:
dwz[]:
dwz[]:
dwz[]:
dwz[]:
dwz[]:
dwz[]:
dwz[]:
dwz[]:
dwz[]:
dwz[]:
dwz[]:
Los: DWZ berechnen!
name:
kennwort:
或(作为源查看):
dwz_name=1000-100&geb=1990&punkte=1&dwz%5B%5D=1300&dwz%5B%5D=1400&dwz%5B%5D=&dwz%5B%5D=&dwz%5B%5D=&dwz%5B%5D=&dwz%5B%5D=&dwz%5B%5D=&dwz%5B%5D=&dwz%5B%5D=&dwz%5B%5D=&dwz%5B%5D=&dwz%5B%5D=&dwz%5B%5D=&dwz%5B%5D=&dwz%5B%5D=&dwz%5B%5D=&dwz%5B%5D=&Los=DWZ+berechnen%21&name=&kennwort=
所以我试着用这个小程序复制它:
// test.go
package main
import (
"fmt"
"strings"
"github.com/gocolly/colly"
)
func main() {
dwz := [18]string{
"1300",
"1400",
}
dwzStr := strings.Join(dwz[:], "&dwz[]=") // (a)
// dwzStr := strings.Join(dwz[:], "&dwz%5B%5D=") // (b)
c := colly.NewCollector()
c.OnHTML("body > form > fieldset:nth-child(4) > dl > dd:nth-child(8)", func(h *colly.HTMLElement) {
fmt.Println(h.Text)
})
c.Post("http://www.isewase.de/dwz/", map[string]string{
"dwz_name": "1000-100",
"geb": "1900",
"punkte": "1",
"dwz[]": dwzStr,
"Los": "DWZ berechnen!",
"name": "",
"kennwort": "",
})
}
结果((a)
和(b)
)
> go run test.go
1040 (+40)
这正是你从网站上得到的结果,当你进入第一个倒数1300
的时候.
但是由于colly.Post
需要map[string]string
作为第二个参数,我不知道如何以另一种方式将数组/切片传递到POST请求中.