📅  最后修改于: 2023-12-03 15:18:42.313000             🧑  作者: Mango
本文介绍如何使用 Go 语言编程实现马耳他至戈佐的轮渡价格查询系统,并且将查询结果以 Markdown 格式返回。
用户通过输入起点和终点,系统会从马耳他至戈佐轮渡公司的官网上获取最近的轮渡价格信息,并将信息显示在命令行终端上。
使用 Go 语言编写程序前,需要先安装 Go 开发环境,安装方法参考 官方文档。
本程序还需要使用第三方库 goquery 来解析 HTML 页面,可以通过以下命令进行安装:
go get github.com/PuerkitoBio/goquery
package main
import (
"fmt"
"log"
"net/http"
"net/url"
"strings"
"github.com/PuerkitoBio/goquery"
)
func main() {
// 输入起点和终点
source := "Malta"
destination := "Gozo"
// 构造请求URL
baseURL := "https://www.gozochannel.com/schedules-tariffs/"
form := url.Values{}
form.Set("frm_island", source)
form.Set("frm_destination", destination)
form.Set("charter", "false")
form.Set("vehicle_type", "normal_vehicle")
form.Set("one_way_trip", "true")
form.Set("rdate_date", "")
form.Set("rdate_month", "")
form.Set("rdate_year", "")
form.Set("price_sort", "1")
form.Set("lang", "en")
req, err := http.NewRequest("POST", baseURL, strings.NewReader(form.Encode()))
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
// 发送请求并解析HTML内容
resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
doc, err := goquery.NewDocumentFromReader(resp.Body)
if err != nil {
log.Fatal(err)
}
// 查找价格信息
price := doc.Find(".price-section .red-color").First().Text()
// 格式化并打印结果
result := fmt.Sprintf("The ferry price from %s to %s is: %s", source, destination, price)
fmt.Println(result)
}
The ferry price from Malta to Gozo is: EUR 4.65
本文介绍了如何使用 Go 语言编写马耳他至戈佐的轮渡价格查询系统。通过发送 POST 请求获取到官网的 HTML 页面并解析得到价格信息,再格式化输出到命令行终端上。