神奇的go语言(网页下载)

目前,网上关于网页爬行的代码很多。但是,自从看了go语言的web下载代码之后,我才发现原来它的网页下载代码才是最简单的。不信的话,大家可以看一下,

package main  
 
 import(  
 "fmt" 
 "log" 
 "net/http" 
 "os" 
)  
 
 func main(){  
 
    resp,err:=http.Get("http://www.baidu.com")  
 
 if err!=nil{  
 
 //handleerror 
 
        fmt.Println(err)  
 
        log.Fatal(err)  
 
    }  
 
    defer resp.Body.Close()  
 
 if resp.StatusCode==http.StatusOK{  
 
        fmt.Println(resp.StatusCode)  
 
    }  
 
    buf:=make([]byte,1024)  
 
 
 //createfile 
 
    f,err1:=os.OpenFile("baidu.html",os.O_RDWR|os.O_CREATE|os.O_APPEND,os.ModePerm)  
 
 if err1!=nil{  
 
        panic(err1)  
 
 return 
    }  
 
    defer f.Close()  
 
 for{  
 
        n,_:=resp.Body.Read(buf)  
 
 if 0==n{  
 
 break 
 
        }  
 
        f.WriteString(string(buf[:n]))  
 
    }  
}  

这其中大家可以注意这几个函数就可以了,分别是http.Get,os.OpenFile,resp.Body.Read,f.WriteString。可以想象一下这几个函数是做什么用的。其实正如它们名字介绍的那样,它们的功能依次是http下载、创建文件、读取字符、写文件。不知道大家答对没有。有兴趣的朋友可以将这部分代码拷贝下来测试一下。

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2016-07-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

厚土Go学习笔记 | 34. 一个简单的 web 服务器实现

go 语言实现 web 服务器很容易。这样就可以很任意的建立 web 应用而互不干扰。当然,端口和IP要规划好。不过这里不讨论这个范畴的内容。我们只实现最基本的...

3225
来自专栏技术小讲堂

ASP.NET AJAX(3)__UpdatePanel

今天也不知道写不写的完了,最近闲下来了,却感冒了,早上起来都不会说话了,不过幸亏咱不是靠嘴皮子过活了,哎~~~~窃喜吧 上一篇简单写到UpdatePanel的一...

3485
来自专栏Golang语言社区

厚土Go学习笔记 | 34. 一个简单的 web 服务器实现

go 语言实现 web 服务器很容易。这样就可以很任意的建立 web 应用而互不干扰。当然,端口和IP要规划好。不过这里不讨论这个范畴的内容。我们只实现最基本的...

3689
来自专栏狮乐园

codereview-s8

之后再efficiencyView方法中调用stopPropagation方法阻止事件冒泡

893
来自专栏java架构师

Web开发中的文件上传组件uploadify的使用

在Web开发中,有很多可以上传的组件模块,利用HTML的File控件的上传也是一种办法,不过这种方式,需要处理的细节比较多,而且只能支持单文件的操作。在目前We...

2915
来自专栏ShaoYL

UINavigationController

3626
来自专栏程序员的诗和远方

TypeScript 中使用 CSS Modules

CSS 的全局性 相当长一段时间 CSS 总是在页面上作为一个全局的存在,以前这个『特性』影响还不算很大,命名上注意一点,比如使用 BEM 也能一定程度上解决问...

5037
来自专栏林德熙的博客

win10 uwp 显示SVG win2d 使用 svg

这些图片在http://www.zcool.com.cn/下载,不知道是不是不能直接用

1751
来自专栏wym

Windows创建窗口详解+代码---十天教会你俄罗斯方块

代码地址:https://blog.csdn.net/qq_41603898/article/details/80968266

971
来自专栏c#开发者

打包并自动安装sql数据库

打包,并自动安装SQL数据库 应一位网友的需求,并修正了MVP李洪根".NET平台下WEB应用程序的部署(安装数据库和自动配置)"中的osql用法错误,已测试通...

2993

扫码关注云+社区

领取腾讯云代金券