文档章节

Go根据url获取html代码

捍卫机密
 捍卫机密
发布于 2013/06/04 23:34
字数 251
阅读 1081
收藏 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
码字总数 45015
作品 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
一个c#的与web服务器交互的HttpClient类

using System;using System.Collections.Generic;using System.IO;using System.Text;using System.Net;using System.Web; namespace Deerchao.Utility{ region fields endregion region eve......

鉴客
2011/12/16
2.5K
1

没有更多内容

加载失败,请刷新页面

加载更多

70.shell的函数 数组 告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析 20.16/20.17 shell中的函数: ~1. 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段...

王鑫linux
今天
2
0
分布式框架spring-session实现session一致性使用问题

前言:项目中使用到spring-session来缓存用户信息,保证服务之间session一致性,但是获取session信息为什么不能再服务层获取? 一、spring-session实现session一致性方式 用户每一次请求都会...

WALK_MAN
今天
5
0
C++ yield()与sleep_for()

C++11 标准库提供了yield()和sleep_for()两个方法。 (1)std::this_thread::yield(): 线程调用该方法时,主动让出CPU,并且不参与CPU的本次调度,从而让其他线程有机会运行。在后续的调度周...

yepanl
今天
4
0
Java并发编程实战(chapter_3)(线程池ThreadPoolExecutor源码分析)

这个系列一直没再写,很多原因,中间经历了换工作,熟悉项目,熟悉新团队等等一系列的事情。并发课题对于Java来说是一个又重要又难的一大块,除非气定神闲、精力满满,否则我本身是不敢随便写...

心中的理想乡
今天
34
0
shell学习之获取用户的输入命令read

在运行脚本的时候,命令行参数是可以传入参数,还有就是在脚本运行过程中需要用户输入参数,比如你想要在脚本运行时问个问题,并等待运行脚本的人来回答。bash shell为此提 供了read命令。 ...

woshixin
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部