我爬了壁纸娘的相册(Go语言爬虫探索)

写在前面: 我是「虐猫人薛定谔i」,一个不满足于现状,有梦想,有追求的00后
\quad
本博客主要记录和分享自己毕生所学的知识,欢迎关注,第一时间获取更新。
\quad
不忘初心,方得始终。
\quad

❤❤❤❤❤❤❤❤❤❤

文章目录

  • 思路分析
  • 代码
  • 结果
  • 总结

我爬了壁纸娘的相册(Go语言爬虫探索)_第1张图片

思路分析

第一次尝试用Go语言来写爬虫,由于自己刚开始学习Go语言,很多东西还没有搞懂,所以……
我爬了壁纸娘的相册(Go语言爬虫探索)_第2张图片
抓包分析一下
我爬了壁纸娘的相册(Go语言爬虫探索)_第3张图片
提取图片链接时,我用的是正则表达式,其实是可以用json解析的
本来打算用并发提高速度的,奈何自己太菜,不会啊……
我爬了壁纸娘的相册(Go语言爬虫探索)_第4张图片

代码

package main

import (
	"fmt"
	"bufio"
	"io"
	"io/ioutil"
	"net/http"
	"os"
	"regexp"
	"strconv"
	"strings"
)

var id int

func saveData(str string) {
	imgPath := "D:\\Code\\Go\\goStudy\\result\\album\\"
	imgName := strconv.Itoa(id) + ".jpg"
	resp, err := http.Get(str)
	if err != nil {
		fmt.Println(err)
		return
	}
	defer resp.Body.Close()
	reader := bufio.NewReaderSize(resp.Body, 32 * 1024)
	imgFile, err := os.Create(imgPath + imgName)
	if err != nil {
		panic(err)
	}
	writer := bufio.NewWriter(imgFile)
	io.Copy(writer, reader)
	fmt.Println(id, ".jpg is ok!")
	id ++
}

func parseData(url string) {
	response, err := http.NewRequest("GET", url, nil)
	if err != nil {
		fmt.Println(err)
		return
	}
	response.Header.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36")
	client := http.Client{}
	resp, err := client.Do(response)
	defer resp.Body.Close()
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		fmt.Println(err)
		return
	}
	data := string(body)
	reg, err := regexp.Compile("\"img_src\":\".*?\"")
	if err != nil {
		fmt.Println(err)
		return
	}
	result := reg.FindAllStringSubmatch(data, -1)
	for _, val := range result {
		str := strings.Replace(val[0], "img_src", "", -1)
		str = strings.Replace(str, "\"", "", -1)[1:]
		saveData(str)
	}
}


func main() {
	url := "https://api.vc.bilibili.com/link_draw/v1/doc/doc_list?uid=6823116&page_num="
	id = 0
	for i := 0; i < 11; i++ {
		pageURL := url + strconv.Itoa(i)
		parseData(pageURL)
	}
}

结果

我爬了壁纸娘的相册(Go语言爬虫探索)_第5张图片
我爬了壁纸娘的相册(Go语言爬虫探索)_第6张图片

总结

个人感觉写爬虫还是用Python方便,可能是自己Python用的比较顺手的缘故吧!
我爬了壁纸娘的相册(Go语言爬虫探索)_第7张图片

蒟蒻写博客不易,加之本人水平有限,写作仓促,错误和不足之处在所难免,谨请读者和各位大佬们批评指正。
如需转载,请署名作者并附上原文链接,蒟蒻非常感激
名称:虐猫人薛定谔i
博客地址:https://blog.csdn.net/Deep___Learning

你可能感兴趣的:(Web,Crawler,Go)