一.要点

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

二.get请求

  1. package main
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "io"
  6. "io/ioutil"
  7. "net/http"
  8. "time"
  9. )
  10. func Get(url string) string {
  11. client := &http.Client{Timeout: 5 * time.Second} // 超时时间:5秒 相当于我们爬虫中的timeout参数
  12. resp, err := client.Get(url) //发起请求
  13. //resp, err := http.NewRequest("GET", url) 也可以这样写 post同理
  14. //增加header选项
  15. resp.Header.Add("Cookie", "xxxxxx")
  16. resp.Header.Add("User-Agent", "xxx")
  17. resp.Header.Add("X-Requested-With", "xxxx")
  18. //cookies就直接加在请求头中就好了
  19. if err != nil { //请求返回的错误参数
  20. panic(err)
  21. }
  22. defer resp.Body.Close() //请求成功对于请求提进行解析
  23. var buffer [512]byte
  24. result := bytes.NewBuffer(nil)
  25. for {
  26. n, err := resp.Body.Read(buffer[0:])
  27. result.Write(buffer[0:n])
  28. if err != nil && err == io.EOF {
  29. break
  30. } else if err != nil {
  31. panic(err)
  32. }
  33. }
  34. return result.String()
  35. }
  36. func main(){
  37. print(Get("http://www.baidu.com"))
  38. }

三.post请求

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

GO用内置包写爬虫的更多相关文章

  1. Golang语言系列-13-常用内置包

    常用内置包 net/http包 http请求和响应 http服务端 main.go文件 package main import ( "fmt" "io/ioutil&qu ...

  2. Go语言内置包之strconv

    文章引用自 Go语言内置包之strconv Go语言中strconv包实现了基本数据类型和其字符串表示的相互转换. strconv包 strconv包实现了基本数据类型与其字符串表示的转换,主要有以下 ...

  3. Day 07 字符串内置方法和爬虫基础3

    目录 异常处理 LeetCode使用之两数之和(示例) 字符串内置方法 爬虫基础3 selenium基本使用 selenium模拟百度登录 selenium爬取京东商品信息 异常处理 try: pri ...

  4. python 基本数据类型以及内置方法

    一.数字类型 # 一.整型int # ======================================基本使用====================================== ...

  5. Python 的内置字符串方法(收藏专用)

    Python 的内置字符串方法(收藏专用) method 字符串 string python3.x  python 4.7k 次阅读  ·  读完需要 44 分钟 5 字符串处理是非常常用的技能,但 ...

  6. 数据库(十三):MySQL内置方法

    进击のpython ***** 数据库--MySQL内置方法 目录 数据库--MySQL内置方法 视图 增加 修改 删除 触发器 创建 使用 删除 存储过程 无参 有参 事务 代码实现 视图 视图是一 ...

  7. Oracle学习笔记十四 内置程序包

    扩展数据库的功能 为 PL/SQL 提供对 SQL 功能的访问 用户 SYS 拥有所有程序包 是公有同义词 可以由任何用户访问 一些内置程序包 程序包名称 说明 STANDARD和DBMS_STAND ...

  8. Python基础(协程函数、内置函数、递归、模块和包)-day05

    写在前面 上课第五天,打卡: 凭着爱,再回首: 一.协程函数(生成器:yield的表达式形式) 1.yield 的语句形式: yield 1 - 这种方式在 Python基础(函数部分)-day04  ...

  9. Day5 函数递归,匿名、内置行数,模块和包,开发规范

    一.递归与二分法 一.递归 1.递归调用的定义 递归调用:在调用一个函数的过程中,直接或间接地调用了函数本身 2.递归分为两类:直接与间接 #直接 def func(): print('from fu ...

随机推荐

  1. adrci清理日志

    adrci> show home adrci> set home diag/rdbms/mesp/MESP adrci> help purge adrci> purge -ag ...

  2. selenium的文档API

    你用WebDriver要做的第一件事就是指定一个链接,一般我们使用get方法: from selenium import webdriver from selenium.webdriver.commo ...

  3. burp suite 之 Repeater(中继器)

    Repeater:对HTTP请求的修改,通常用于上传攻击 通过抓包后将请求包通过选项卡发送到 Repeater下 右下角 显示 页面大小为18809字节 可以自定义添加主机 大小写敏感 正则表达式 文 ...

  4. 基础篇:JVM运行时内存布局

    目录 1 JVM的内存区域布局 2 JVM五大数据区域介绍 3 JVM运行时内存布局和JMM内存模型区别 4 JMM内存模型交互操作 欢迎指正文中错误 关注公众号,一起交流 参考文章 1 JVM的内存 ...

  5. 计算(calc)

    计算(calc) [题目描述] 小明在你的帮助下,破密了Ferrari设的密码门,正要往前走,突然又出现了一个密码门,门上有一个算式,其中只有"(",")",& ...

  6. Python3基础——递归

    递归函数 如果一个函数在内部调用自身本身,这个函数就是递归函数. 递归函数的优点是定义简单,逻辑清晰.理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰. 使用递归函数需要注意防止栈 ...

  7. GetDlgItem(函数详解)

    转载: https://blog.csdn.net/hk121/article/details/80942850 hwndScroll = GetDlgItem(hwnd, IDC_SCROLL); ...

  8. C++中try&catch

    参考:   https://blog.csdn.net/xueluowutong/article/details/81257654 在c++中,可以直接抛出异常之后自己进行捕捉处理,如:(这样就可以在 ...

  9. Arduino 语法与函数

    Arduino programs can be divided in three main parts: structure, values (variables and constants), an ...

  10. JavaScript按钮排他思想

    要求: 有一系列按钮,要求每单击其中一个,该按钮改变样式(以背景颜色为例),其他按钮恢复保持默认样式. 实现思路: 获取所有按钮元素 首先先把其他按钮的背景颜色去掉 再单独设置自己的样式 代码实现: ...