📌  相关文章
📜  prix ferry malte gozo - Go 编程语言 - Go 编程语言(1)

📅  最后修改于: 2023-12-03 15:18:42.313000             🧑  作者: Mango

Go语言编程实现马耳他至戈佐的轮渡价格查询

简介

本文介绍如何使用 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 页面并解析得到价格信息,再格式化输出到命令行终端上。