func getStations(line *storage.Line) ([]*storage.Station, error) { var url *url.URL = line.GetURL() resp, err := http.Get(url.String()) if err != nil { return nil, err } defer resp.Body.Close() bodyParser, err := html.Parse(resp.Body) if err != nil { return nil, err } var stations []*storage.Station = make([]*storage.Station, 0) var table *html.Node = findNode(bodyParser, "table") if table == nil { return stations, nil } var tbody *html.Node = findNode(table, "tbody") var row *html.Node for row = findNode(tbody, "tr"); row != nil; row = findNext(row) { var col *html.Node = findNode(row, "td") var fullName string = col.FirstChild.Data var nameCity []string = strings.Split(fullName, ",") var name string = nameCity[0] var city string if len(nameCity) > 1 { city = nameCity[1] } col = findNext(col) //findAttrByKey(findNode(col, "p"), "class") col = findNext(col) var a *html.Node = findNode(col, "a") var station *storage.Station if a != nil { stationUrl, err := url.Parse(findAttrByKey(a, "href").Val) if err != nil { return nil, err } var code string = stationUrl.Query().Get("tx_stifinfomobi_pi3[externalcode]") station = storage.NewStation(name, city, code) } else { station = storage.NewRampStation(name, city) } station.AttachLine(line) getElevatorsAndStatus(station) if station.LastUpdate.After(line.LastUpdate) { line.LastUpdate = station.LastUpdate } stations = append(stations, station) } return stations, nil }