我爬了壁紙孃的相冊(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.csdn.net/Deep___Learning

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章