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

本文分享了使用Go语言进行爬虫开发的初次尝试,详细记录了从思路分析到代码实现的过程,包括抓包分析、图片链接提取及下载,并对代码进行了总结反思。

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

❤❤❤❤❤❤❤❤❤❤


在这里插入图片描述

思路分析

第一次尝试用Go语言来写爬虫,由于自己刚开始学习Go语言,很多东西还没有搞懂,所以……
在这里插入图片描述
抓包分析一下
在这里插入图片描述
提取图片链接时,我用的是正则表达式,其实是可以用json解析的
本来打算用并发提高速度的,奈何自己太菜,不会啊……
在这里插入图片描述

代码

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)
	}
}

结果

在这里插入图片描述
在这里插入图片描述

总结

个人感觉写爬虫还是用Python方便,可能是自己Python用的比较顺手的缘故吧!
在这里插入图片描述

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

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值