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文件。

原文地址:https://www.cnblogs.com/liuhe688/p/9597749.html

时间: 2024-11-02 06:08:37

Golang系列文章:抓取网页内容的相关文章

jsoup实现java抓取网页内容。

Java 程序在解析 HTML 文档时,相信大家都接触过 htmlparser 这个开源项目,我曾经在 IBM DW 上发表过两篇关于 htmlparser 的文章,分别是:从 HTML 中攫取你所需的信息和 扩展 HTMLParser 对自定义标签的处理能力.但现在我已经不再使用 htmlparser 了,原因是 htmlparser 很少更新,但最重要的是有了 jsoup . jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址.HTML 文本内容.它提供了一套非

ASP.NET抓取网页内容的实现方法

这篇文章主要介绍了ASP.NET抓取网页内容的实现方法,涉及使用HttpWebRequest及WebResponse抓取网页内容的技巧,需要的朋友可以参考下 一.ASP.NET 使用HttpWebRequest抓取网页内容 /// <summary>方法一:比较推荐 /// 用HttpWebRequest取得网页源码 /// 对于带BOM的网页很有效,不管是什么编码都能正确识别 /// </summary> /// <param name="url">

phpjquery抓取网页内容

phpquery抓取网页内容,以下都经过测试,不过phpquery你最好用我上传的,别的不保证,其实我也是下载的. include 'phpQuery/phpQuery.php'; /** phpQuery::newDocumentFile("http://www.helloweba.com/blog.html"); $artlist = pq(".blog_li"); foreach($artlist as $li){ echo pq($li)->find(

抓取网页内容并截图

需要调用windows.Forms命名空间,使用一个类库WebPreview1.1.rar_by_Kai.Ma,此处仅记录之. 给一个下载链接WebPreview1.1.rar_by_Kai.Ma.rar 抓取网页内容并截图,布布扣,bubuko.com

perl 抓取网页内容

抓取乐彩网历年排列5数据 use LWP::Simple; use FileOperate;my $src = 'http://www.17500.cn/p5/all.php';my $FileOperate = FileOperate->new();my $FilePath = "C:\\Documents and Settings\\Administrator\\桌面\\PrelTest\\保存的模块\\文本处理";#获取文件夹下所有内容 #http://www.17500.

C# .net 抓取网页内容

ASP.NET 中抓取网页内容是非常方便的,而其中更是解决了 ASP 中困扰我们的编码问题. 1.抓取一般内容 需要三个类:WebRequest.WebResponse.StreamReader 所需命名空间:System.Net.System.IO 核心代码: WebRequest 类的 Create 为静态方法,参数为要抓取的网页的网址: Encoding 指定编码,Encoding 中有属性 ASCII.UTF32.UTF8 等全球通用的编码,但没有 gb2312 这个编码属性,所以我们使

python爬虫CSDN文章抓取

CSDN原则上不让非人浏览访问,正常爬虫无法从这里爬取文章,需要进行模拟人为浏览器访问. 使用:输入带文章的CSDN链接自动生成正文的HTML,文件名为标题名 #!/usr/bin/env python # coding=utf-8 ######################################### #> File Name: CSDN_article.py #> Author: nealgavin #> Mail: [email protected] #> Cre

Asp 使用 Microsoft.XMLHTTP 抓取网页内容(没用乱码),并过滤需要的内容

Asp 使用 Microsoft.XMLHTTP 抓取网页内容,并过滤需要的内容 Asp 使用 Microsoft.XMLHTTP 抓取网页内容无乱码处理,并过滤需要的内容 示例源码: <% Dim xmlUrl,http,strHTML,strBody xmlUrl = Request.QueryString("u") REM 异步读取XML源 Set http = server.CreateObject("Microsoft.XMLHTTP") http.

shell命令curl抓取网页内容-下载xls文件

通过curl命令抓取网页内容,关键点如下: 1.curl要模拟浏览器,最好是有个代理,因为很多站点都会搞个反爬虫什么的. 2.我的需求很简单,就是在国家外汇管理局上下载各种货币对美元的汇率. http://www.safe.gov.cn/wps/portal/sy/tjsj_dmzsl 3.主要命令:curl,grep,awk,xls2txt,msql(LOAD DATA ). curl:提取url xls2txt:shell下的xls操作命令 xls2txt-0.14.tar.gz 下载地址:

ASP.NET抓取网页内容

原文:ASP.NET抓取网页内容 一.ASP.NET 使用HttpWebRequest抓取网页内容 这种方式抓取某些页面会失败 不过,有时候我们会发现,这个程序在抓取某些页面时,是获不到所需的内容的,有时候甚至返回404的错误提示页,这是什么原因呢? 其实,很多人都忽略了一个问题,那就是服务器默认的浏览器问题.有的服务器默认的浏览器是手机浏览器,那么,当我抓取这个服务器下的网页是,就相当于用手机浏览器来打开网页,而如果要抓取的目标网页没有相应的手机网页的话,就会返回意想不到的结果,有的返回404