文档章节

Go根据url获取html代码

捍卫机密
 捍卫机密
发布于 2013/06/04 23:34
字数 251
阅读 1091
收藏 0
import (
	"bufio"
	"bytes"
	"fmt"
	"io/ioutil"
	"net/http"
	"os"
	"regexp"
	"strconv"
	"strings"
)
/// 这个获取的全乱码,只有某些网站正常,几乎模拟火狐浏览器请求
func GetUrl(url string, method string) string {
	client := &http.Client{}
	reqest, _ := http.NewRequest(method, url, nil)

	reqest.Header.Set("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
	reqest.Header.Set("Accept-Charset", "utf-8;q=0.7,*;q=0.3")
	//reqest.Header.Set("Accept-Encoding", "gzip, default")//这个有乱码,估计是没有解密,或解压缩
        reqest.Header.Set("Accept-Encoding", "utf-8")//这就没有乱码了
	reqest.Header.Set("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3")
	reqest.Header.Set("Cache-Control", "max-age=0")
	reqest.Header.Set("Connection", "keep-alive")
	reqest.Header.Set("Host", url)
	reqest.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:20.0) Gecko/20100101 Firefox/20.0")

	response, _ := client.Do(reqest)
	if response.StatusCode == 200 {
		body, _ := ioutil.ReadAll(response.Body)
		bodystr := string(body)
		return bodystr
	}
	return ""
}

 

上面这个方法乱码问题还无解!

下面一个是用http.Get得到html的方法没有乱码问题

func GetHTML(url string) string {
	res, err := http.Get(url)
	if err != nil {
		return ""
	}
	body, _ := ioutil.ReadAll(res.Body)//转换byte数组
	defer res.Body.Close()
	//io.Copy(os.Stdout, res.Body)//写到输出流,
	bodystr := string(body)//转换字符串
	return bodystr
}

© 著作权归作者所有

共有 人打赏支持
捍卫机密
粉丝 5
博文 126
码字总数 46331
作品 0
成都
程序员
私信 提问
用python实现一个抓取腾讯电影的爬虫

实现思路: 抓取一个电影网站中的所有电影的思路如下: 根据一个URL得到电影网站的所有分类 得到每个分类中的电影的页数 根据其电影分类的URL规律构造每个分类中每个页面的URL 分析每个页面中...

awakenjoys
2013/08/16
0
0
提交数据的各种方式form,curl ,sockt,file_get_contents

1、手动构造http数据包实现http数据提交 这种方式一般不建议使用,除非是特别要求或必须应用时再使用,手动构造的http头数据的方式比较麻烦,而且实现起来代码也比较多.我只有在利用其他方式 实...

morebetter1
2015/08/14
0
0
网络爬虫----男!生!福!利!

一、配置mvn依赖 org.apache.httpcomponents httpclient 4.1.2 二、代码 1、获取网页内容 package com.chenanyi.fuli.Helper;import java.io.IOException;import org.apache.http.HttpEntit......

陈安一
2015/03/09
0
0
spring-boot快速入门

Spring Boot 相当于传统的Spring Web应用只不过不是作为war部署到Web容器中,而是可执行的jar包,内嵌一个Web服务器Jetty,在main函数中把上下文设置好并启动Jetty服务器去监听端口。 1、 新...

gaofeng36599
2017/07/14
0
0
如果让你设计一个网络爬虫,你怎么避免陷入无限循环?

话说爬虫为什么会陷入循环呢?答案很简单,当我们重新去解析一个已经解析过的网页时, 就会陷入无限循环。这意味着我们会重新访问那个网页的所有链接, 然后不久后又会访问到这个网页。最简单...

一贱书生
2016/11/25
280
1

没有更多内容

加载失败,请刷新页面

加载更多

EOS docker开发环境

使用eos docker镜像是部署本地EOS开发环境的最轻松愉快的方法。使用官方提供的eos docker镜像,你可以快速建立一个eos开发环境,可以迅速启动开发节点和钱包服务器、创建账户、编写智能合约....

汇智网教程
今天
12
0
《唐史原来超有趣》的读后感优秀范文3700字

《唐史原来超有趣》的读后感优秀范文3700字: 作者:花若离。我今天分享的内容《唐史原来超有趣》这本书的读后感,我将这本书看了一遍之后就束之高阁了,不过里面的内容一直在在脑海中回放,...

原创小博客
今天
19
0
IC-CAD Methodology知识图谱

CAD (Computer Aided Design),计算机辅助设计,指利用计算机及其图形设备帮助设计人员进行设计工作,这个定义同样可以用来近似描述IC公司CAD工程师这个岗位的工作。 早期IC公司的CAD岗位最初...

李艳青1987
今天
18
0
CompletableFuture get方法一直阻塞或抛出TimeoutException

问题描述 最近刚刚上线的服务突然抛出大量的TimeoutException,查询后发现是使用了CompletableFuture,并且在执行future.get(5, TimeUnit.SECONDS);时抛出了TimeoutException异常,导致接口响...

xiaolyuh
今天
9
0
dubbo 搭建与使用

官网:http://dubbo.apache.org/en-us/ 一,安装监控中心(可以不安装) admin管理控制台,monitor监控中心 下载 bubbo ops 这个是新版的,需要node.js环境,我没有就用老版的了...

小兵胖胖
今天
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部