• GO用内置包写爬虫


    一.要点

    爬虫被想太多,把他当做一个模拟别人的请求响应即可了,所有呢go写爬虫关键是写请求

    二.get请求

    package main
    
    import (
    	"bytes"
    	"encoding/json"
    	"io"
    	"io/ioutil"
    	"net/http"
    	"time"
    )
    
    func Get(url string) string {
    	client := &http.Client{Timeout: 5 * time.Second} // 超时时间:5秒 相当于我们爬虫中的timeout参数
    	resp, err := client.Get(url)   //发起请求  
        //resp, err := http.NewRequest("GET", url) 也可以这样写 post同理
    
        //增加header选项
        resp.Header.Add("Cookie", "xxxxxx")
        resp.Header.Add("User-Agent", "xxx")
        resp.Header.Add("X-Requested-With", "xxxx")
        //cookies就直接加在请求头中就好了
        
    	if err != nil {         //请求返回的错误参数
    		panic(err)
    	}
    	defer resp.Body.Close()  //请求成功对于请求提进行解析
    	var buffer [512]byte
    	result := bytes.NewBuffer(nil)
    	for {
    		n, err := resp.Body.Read(buffer[0:])
    		result.Write(buffer[0:n])
    		if err != nil && err == io.EOF {
    			break
    		} else if err != nil {
    			panic(err)
    		}
    	}
    	return result.String()
    }
    
    
    func main(){
    	print(Get("http://www.baidu.com"))
    }
    

    三.post请求

    //其他地方就省略咯
    func Post(url string, data interface{}, contentType string) string {
    	client := &http.Client{Timeout: 5 * time.Second}
    	jsonStr, _ := json.Marshal(data)
    	resp, err := client.Post(url, contentType, bytes.NewBuffer(jsonStr))
    	if err != nil {
    		panic(err)
    	}
    	defer resp.Body.Close()
    
    	result, _ := ioutil.ReadAll(resp.Body)
    	return string(result)
    }
    

  • 相关阅读:
    数据仓库建模方法初步
    金融行业信用评级主题和概念清单
    数据挖掘标准规范之CRISP-DM基础
    HBase与Zookeeper数据结构查询
    R语言数据挖掘相关包总结-转帖
    R语言学习路线图-转帖
    在IIS上部署Asp.Net Core 2.2.0
    [转]Winform打包工具SetupFactory 9 的使用
    SQLite带参数处理方法
    Web.Config中配置字符串含引号的处理
  • 原文地址:https://www.cnblogs.com/pythonywy/p/13525693.html
Copyright © 2020-2023  润新知