有这样一个故事:Google 的开发人员在等待其他程序编译时设计了 Go。 传统语言的编译速度如此之慢,以至于迫使 Google 员工编写自己的语言,并且他们确实编写了自己的语言! 结果相当惊人。
由于 go 被设计为在多核上运行,因此它比其他编程语言快得多(例如 example 爪哇)。 看一下基准测试 这个网站! 此外,对于 goroutines(在其余代码完成时运行的并发函数),go 为 web 开发和其他需要异步作业的用例铺平了道路。 在本文中,我们将研究如何在 Linux 中创建我们自己的 Go 工作流程。
在 Linux 上设置 Go 开发环境包括安装 Go、配置 PATH、设置工作区以及为代码编辑器安装必要的插件。 这使您可以在 Linux 机器上高效地创建、构建和运行 Go 程序,从而使您能够轻松地开发应用程序和处理项目。
在你的 Linux 机器上安装 Go
第一步是在我们的机器上安装 Go。 安装去访问 这个网站 并查看说明。 对于 linux,我们需要先下载文件,然后从机器上删除所有旧的下载。 然后,使用该 tar 命令将文件内容解压缩或提取到一个特殊目录(通常是 /usr/local)。 对我来说,命令是:
cd Downloads sudo tar -xvzf go1.20.3.linux-amd64.tar.gz -C /usr/local/
现在我们需要更改 bashrc PATH 变量:
sudo nano .bashrc
然后在最后添加以下行:
export PATH=$PATH:/usr/local/go/bin
现在您可以检查是否安装成功。 第一的 close 关闭终端并打开一个新终端,然后输入以下命令:
go version
配置 Go 并设置您的工作区
现在我们已经在我们的系统中安装了 Go,我们可以使用代码编辑器并设置一些插件,这将使我们的生活更轻松。 在本文中,我们将使用 VS Code。 继续并在插件选项卡中搜索 go。 安装以下插件:
创建你的第一个 Go 程序:Hello World
现在我们可以编写我们的第一个围棋程序了。 这是 Go 中的一个基本的 hello-world 程序:
import "fmt" func main() { fmt.Println("Hello World") }
现在您可以打开一个终端并输入以下代码来运行该程序:
go run <filename.go>

或者你也可以创建一个可执行文件然后运行它:
go build <filename.go> ./filename

使用 Go 构建基本的亚马逊产品抓取工具
现在您已经创建了一个基本的 hello-world 应用程序。 是时候更深入地挖掘并创建一些新项目了。 Go 有一个非常好的库,叫做 colly,它是一个网络抓取库,让我们在 go 中制作一个非常基本的 Amazon Products 网络抓取器。 刮板的工作原理如下:
用户输入搜索词,网络抓取工具在 amazon.in 中搜索关键字,并在结果的第一页返回产品详细信息。 对于每个产品,它将向用户返回三个信息:产品名称、产品等级(以 5 为单位)和产品价格。 首先我们需要创建一个 go mod 文件,为此转到终端并输入命令:
go mod init example.com/scraper
接下来将在您的文件夹中创建一个名为 go.mod 的文件。 继续并将以下内容粘贴到您的 go.mod 文件中:
require github.com/gocolly/colly v1.2.0
接下来给出命令:
go mod tidy
现在你可以在另一个名为 scraper.go 的文件中编写你的 scraper 代码如下:
package main import( "fmt" //formatted I/O "github.com/gocolly/colly" //scraping framework "strconv" "strings" "os" "bufio" ) //Results:div.s-result-list.s-search-results.sg-row //Items:div.a-section.a-spacing-base //Name:span.a-size-base-plus.a-color-base.a-text-normal //Price:span.a-price-whole //Stars:span.a-icon-alt func main(){ // var search_word string fmt.Print("What do you want to search for today? ") scanner := bufio.NewScanner(os.Stdin) scanner.Scan() search_word := scanner.Text() search_word = strings.ReplaceAll(search_word, " ", "%20") fmt.Println(search_word) c := colly.NewCollector(colly.AllowedDomains("www.amazon.in")) c.OnRequest(func(r *colly.Request){ fmt.Println("Link of the page:", r.URL) }) c.OnHTML("div.s-result-list.s-search-results.sg-row", func(h*colly.HTMLElement){ h.ForEach("div.a-section.a-spacing-base", func(_ int, h*colly.HTMLElement){ var name string name = h.ChildText("span.a-size-base-plus.a-color-base.a-text-normal") var stars string stars = h.ChildText("span.a-icon-alt") v := h.ChildText("span.a-price-whole") v = strings.Replace(v, ",", "", -1) price, err := strconv.ParseFloat(v, 32) if err != nil{ fmt.Println("Error! Can't parse Price to Int") return } // price = strconv.ParseInt(priceAsString) fmt.Println("ProductName: ", name) fmt.Println("Ratings: ",stars) fmt.Println("Price: ",price) }) }) URL := fmt.Sprintf("https://www.amazon.in/s?k=%s&ref=nb_sb_noss", search_word) c.Visit(URL) }
在下图中,您可以看到我使用搜索词运行代码时的响应:notebook。

结论
在这篇文章中,我们从最基础的开始,学习了如何在我们的本地机器上安装 Go,然后通过在 Go 中运行一个 hello-world 脚本来检查安装,最后在 Go 中看到了一个非常粗糙的 Amazon web-scraper。 但是,作为练习,您可以通过将结果写入 csv 文件甚至创建一个多页网络抓取器来进行项目,最多显示 10-15 页的结果。 如需更多此类精彩内容,请关注 LinuxForDevices。 另请查看这篇关于 Linux 开发人员基本在线安全工具的文章。 感谢阅读,下一篇再见!