【Go】GO语言获取一个url

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

1.5 获取一个url

基本思路案例

package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
	"os"
)

func main() {
	for _, url := range os.Args[1:] {
		resp, err := http.Get(url)
		if err != nil {
			fmt.Fprintf(os.Stderr, "fetch:%v\n", err)
			os.Exit(1)
		}

		b, err := ioutil.ReadAll(resp.Body)
		resp.Body.Close()
		if err != nil {
			fmt.Fprintf(os.Stderr, "fetch:reading %s:%v\n", url, err)
			os.Exit(1)
		}
		fmt.Printf("%s", b)
	}
}

这个程序使用的函数来自两个包:net/http和io/ioutil。
http.Get函数产生一个HTTP请求,如果没有出错,返回结果存在响应结构resp里面。
其中resp的Body域包含服务器端响应的一个可读取数据流。
随后ioutil.ReadAll读取整个响应结果并存入b。
关闭Body数据流来避免资源泄漏,使用Printf将响应输出到标准输出。

调用

go run main.go http://gopl.io

成功输出:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
...

如果HTTP请求失败,fetch报告失败

fetch:Get "http://xxx.io": dial tcp: lookup xx.io: no such host
exit status 1

来源

《Go程序设计语言》

Go语言实现Onvif客户端:7、获取摄像头快照 Go语言实现Onvif客户端:7、获取摄像头快照 文章目录Go语言实现Onvif客户端:7、获取摄像头快照1、代码2、结果3、查看 1、代码 摄像头对该时刻可以进行快照抓拍,抓拍结果可以以url地址的形式提供,在浏览器上可以直接查看抓拍的结果,Onvif协议也支持该服务。 /** * @Description: 获取快照的url信息,可以直接在浏览器打开 * @time: 2021-04-02 09:56:52 * @receiver client * @return returnInfo */ 阅读详情

相关推荐

go smtp 返回eof_今日营业:go 爬虫初试

最近几年,golang挺热门的,使用这个技术栈的公司也少,前段时间也一直想学习这个来着,但是一直断断续续,忘了又忘,这几天正好看到一个小例子,还挺好玩,感兴趣的可以从这里慢慢入门:就是一个go的爬虫例子,但是在这个示例中,可以看到go里面一个很有趣的特性,相信这也是为什么很多人喜欢使用go。首先说下什么是爬虫:大部分应该都能理解,爬虫其实就是访问各种web服务器,然后获取其中的数据信息。爬取的流...

weixin_33895554的博客 1589

Go程序设计语言1.5 获取一个URL

1.5 获取一个URL 对许多应用而言,访问互联网上的信息和访问本地文件系统一样重要。Go提供了一系列包,在net包下面分组管理,使用它们可以方便地通过互联网发送和接收信息,使用底层的网络连接,创建服务器,此时Go的并发特性(见第8章)特别有用。 程序fetch展示从互联网获取信息的最小需求,它获取每个指定URL的内容,然后解析地输出。fetch来...

weixin_33721427的博客 254

Go语言之Gin框架,通过网页URL路径,后端返回相应值

摘要效果代码实现代码解析 效果 用户请求http://ip:9090/go语言/12,后台返回对应值 代码实现 目录结构 main.go 代码内容 main.go内容 package main import ( "github.com/gin-gonic/gin" "net/http" ) func main() { r := gin.Default() r.GET("/:name/:age", func(c *gin.Context) { name := c.Param("name"

CN_Eden 863

Golang学习日志 ━━ 调用系统默认浏览器打开指定链接(全平台)

做惯了网页版,现在开发软件就想着web界面。。。既然如此,那就让golang运行的时候直接打开浏览器,并跳转到指定的网址就行了~~ 原文网址:https://www.jianshu.com/p/29adf056e72b Windows 代码实例: package main import ( "os/exec" "syscall" ) func main() { // 有...

暂时先用这个名字 2260

Go语言:HTTP客户端请求设置用户浏览器版本User-Agent

http.Client默认的User-Agent是“Go-http-client/1.1”,在做页面抓取的时候容易被服务端拒绝,需要在请求前重新设置一个模拟的User-Agent。具体代码如下: package main import ( "fmt" "io/ioutil" "net/http" "time" ) func main() { client := &http.Client{ Timeout: 2 * time.Second, } req, _ := http

pengpengzhou的博客 9492

Golang模拟网页请求

func httpRequest(url string) (*http.Response, error) { request, err := http.NewRequest("GET", url, nil) if err != nil { return nil, err } // 设置请求投 request.Header.Add("Accept", "text/html,applic...

Pasiyu的博客 4163

14、go语言:单任务版爬虫

1、获得初始页面内容: 获取并打印所有城市第一页用户的详细信息 func main(){ resp,err := http.Get("http://www.zhenai.com/zhenghun") if err != nil { panic(err) } defer resp.Body.Close() if resp.StatusCode != http.StatusOk { ...

u012573437的博客 240

GO 构造 URL解析 URL

GO 构造 URL解析 URL

maxiaojing的博客 1115

golang获取url

package main import ( "fmt" "io/ioutil" "net/http" "os" ) func main() { for _, url := range os.Args[1:] { resp, err := http.Get(url) if err != nil { fmt.Fprintf(os.Stderr, "fetch: %v\n", err) o.

1426

Golang: url.Parse、RawQuery 用法

直接上例子吧: func time_GET(w http.ResponseWriter, r *http.Request) { u, _ := url.Parse(r.URL.String()) values, _ := url.ParseQuery(u.RawQuery) fmt.Println(u) // /time?a=111&amp;b=121...

程序猿视角 1万+

GO-并发获取多个url

并发的获取多个url中内容: package main import ( "fmt" "io" "io/ioutil" "net/http" "time" ) func main() { start := time.Now() ch := make(chan string) list := []string{"https://www.baidu.com", "https://www.baidu.com"} for _, url := range list { go fetch(

sinat_36270007的博客 267

Go语言圣经 - 习题 - 1.6. 并发获取多个URL

package main import ( "fmt" "io" "io/ioutil" "net/http" "os" "strings" "time" ) type results struct { url string result string } func main() { start := time.Now() ch := make(chan str

Hello World 759

go -- url

package main import( "fmt" "net/url" "log" ) func main() { u, err := url.Parse("http://bing.com/search?q=dotnet") fmt.Println(u) if err != nil { log.Fatal(err) } ...

enjoy_sun_moon的博客 893

Golang URL解析

Golang URL解析

深漂小码哥 586

golangStart fetch.go

go 圣经 1.8 练习题修改 fetch 范例,如果输入的URL参数没有 http:// 前缀,为这个URL加上前缀。并用到 strings.HasPrefix 函数// Fetch prints the content found at a URL package mainimport ( "fmt" "io/ioutil" "net/http" "os"

磨洋工的博客 715

[Go] Golang发送http GET请求

使用标准库http来实现 package tools import ( "io/ioutil" "net/http" ) func Get(url string)string{ res, err :=http.Get(url) if err != nil { return "" } robots, err := iou...

程序员老狼专注开发aigc或客服系统应用 963

gourl解析

对于解析url,是一个常见的场景,下面就来说这个,直接见代码: package main import ( "fmt" "net/url" "strings" ) func main(){ s := "postgres://user:pass@host.com:5432/path?k=v#f" ...

weixin_30316097的博客 931

Go语言实现抓图实例

Go语言实现网页抓图功能。

纸上得来终觉浅,绝知此事要躬行 2420

go语言一个爬虫

,爬取网页内容。 这是可行的,你可以使用Go语言中的net / http包来编写爬虫。您可以使用Get或Post方法发送HTTP请求,然后使用正则表达式或Go语言中的其他库来解析HTML响应。 下面是一个简单的示例,该示例使用Go语言的net / http包发送GET请求并解析响应: package main import ( "fmt" "net/http" "io/i...

weixin_42591908的博客 230
上一篇: 【PHP】opencart设置多店铺
下一篇: 【JS】获取扫码设备的数据,并输出在页面
一筐大白菜啊
博客等级 码龄10年 113粉丝 247原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值