Golang: 抓取网页内容
今天写个简单的程序,根据指定的 URL 来抓取相应的网页内容,然后存入本地文件。这个程序会涉及到网络请求和文件操作等知识点,下面是实现代码:
// fetch.go
package main
import (
"os"
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := os.Args[1]
// 根据URL获取资源
res, err := http.Get(url)
if err != nil {
fmt.Fprintf(os.Stderr, "fetch: %v\n", err)
os.Exit(1)
}
// 读取资源数据 body: []byte
body, err := ioutil.ReadAll(res.Body)
// 关闭资源流
res.Body.Close()
if err != nil {
fmt.Fprintf(os.Stderr, "fetch: reading %s: %v\n", url, err)
os.Exit(1)
}
// 控制台打印内容 以下两种方法等同
fmt.Printf("%s", body)
fmt.Printf(string(body))
// 写入文件
ioutil.WriteFile("site.txt", body, 0644)
}
上面的代码中,我们引入了 net/http 网络包,然后调用 http.Get(url) 方法获取 URL 对应的资源,之后读取出资源数据,然后在控制台打印,并将内容写入到本地文件中。
需要注意的是,在读取资源数据完毕后,应该及时将资源流关闭,避免出现内存资源的泄露。
另外,在处理异常时,我们使用了 fm.Fprintf() 这个方法,它是格式化三大方法之一:
- Printf: 格式化字符串并输出到 os.Stdout 中。
- Fprintf: 格式化字符串并输出到指定文件设备中,所以参数比 Printf 多一个文件指针 FILE*。
- Sprintf: 格式化字符串并输出到指定字符串中,所以参数比 Printf 多一个 char*,那就是目标字符串地址。
编译后运行程序,并指定一个 URL 参数,这里暂时指定为百度吧,还是希望 Google 近期能够回归:
$ ./fetch http://www.baidu.com
运行完程序,在当前目录中会生成一个 site.txt 文件。
Golang: 抓取网页内容的更多相关文章
- paip.抓取网页内容--java php python
paip.抓取网页内容--java php python.txt 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog ...
- 使用Jsoup函数包抓取网页内容
之前写过一篇用Java抓取网页内容的文章,当时是用url.openStream()函数创建一个流,然后用BufferedReader把这个inputstream读取进来.抓取的结果是一整个字符串.如果 ...
- Asp.Net 之 抓取网页内容
一.获取网页内容——html ASP.NET 中抓取网页内容是非常方便的,而其中更是解决了 ASP 中困扰我们的编码问题. 需要三个类:WebRequest.WebResponse.StreamRea ...
- ASP.NET抓取网页内容的实现方法
这篇文章主要介绍了ASP.NET抓取网页内容的实现方法,涉及使用HttpWebRequest及WebResponse抓取网页内容的技巧,需要的朋友可以参考下 一.ASP.NET 使用HttpWebRe ...
- ASP.NET抓取网页内容
原文:ASP.NET抓取网页内容 一.ASP.NET 使用HttpWebRequest抓取网页内容 这种方式抓取某些页面会失败 不过,有时候我们会发现,这个程序在抓取某些页面时,是获不到所需的内容的, ...
- c#抓取网页内容乱码的解决方案
写过爬虫的同学都知道,这是个很常见的问题了,一般处理思路是: 使用HttpWebRequest发送请求,HttpWebResponse来接收,判断HttpWebResponse中”Content-Ty ...
- C# 抓取网页内容的方法
1.抓取一般内容 需要三个类:WebRequest.WebResponse.StreamReader 所需命名空间:System.Net.System.IO 核心代码: view plaincopy ...
- ASP.NET 抓取网页内容
(转)ASP.NET 抓取网页内容 ASP.NET 抓取网页内容-文字 ASP.NET 中抓取网页内容是非常方便的,而其中更是解决了 ASP 中困扰我们的编码问题. 需要三个类:WebRequest. ...
- 爬虫学习一系列:urllib2抓取网页内容
爬虫学习一系列:urllib2抓取网页内容 所谓网页抓取,就是把URL地址中指定的网络资源从网络中读取出来,保存到本地.我们平时在浏览器中通过网址浏览网页,只不过我们看到的是解析过的页面效果,而通过程 ...
随机推荐
- 操作excel文件爬取nvd.nist数据
#!/usr/bin/env python # encoding: utf-8 #@author: jack import random from time import sleep import p ...
- spark基础知识四
围绕spark的其他特性和应用.主要包括以下几个方面 spark自定义分区 spark中的共享变量 spark程序的序列化问题 spark中的application/job/stage/task之间的 ...
- spark基础知识二
主要围绕spark的底层核心抽象RDD进行理解.主要包括以下几个方面 RDD弹性分布式数据集的概念 RDD弹性分布式数据集的五大属性 RDD弹性分布式数据集的算子操作分类 RDD弹性分布式数据集的算子 ...
- sql实现MD5加密
select substring(sys.fn_sqlvarbasetostr(HashBytes('MD5','test')),3,32)
- magic模块 :Exception Value:failed to find libmagic. Check your installation
原因 缺少安装依赖: magic 安装依赖: https://github.com/ahupp/python-magic#dependencies windows下解决方法: https://gith ...
- Android 及 iOS 常用操作命令
应用相关 1. 安装应用(真机) Android adb install xxx.apk iOS ideviceinstaller -i xxx.ipa 2. 卸载应用(真机) Android adb ...
- Hystrix实现ThreadLocal上下文的传递 转
springcloud微服务中, 服务间传输全局类参数,如session信息等. 一.问题背景 Hystrix有2个隔离策略:THREAD以及SEMAPHORE,当隔离策略为 THREAD 时,是没办 ...
- LuoguP3069 【[USACO13JAN]牛的阵容Cow Lineup
题目链接 看了看其他大佬的文章,为什么要控制右端呢 其实就是一个很简单的模拟队列趴... 难点就在于根据题意我们可以分析得一段合法区间内,不同种类个数不能超过k+2 哦当然,由于种类数范围过大,要对种 ...
- Linux crond任务调度(定时任务),Linux磁盘分区/挂载
一.crond任务调度 1.基本语法 crontab [选项] -e : 编辑 crontab定时任务 -l : 查询crontab -r : 删除当前用户所有的crontab任务 例子: 每分钟执行 ...
- 关于mpvue编写小程序的坑
在引入第三方UI时 百度了很多方法,对于第一次接触的,在我们写vue的页面需要添加main.json 同时在写文件时,要在最后不要加 “,” !!!并且在微信小程序会出现路径报错 在微信小程序中点击 ...