Golang爬虫

简介: 示例爬去美女图

申明仅供学习

一、准备工作

网站:亿图网爬取美女图(https://www.yeitu.com
go语言基础

二、爬取美女区域(/meinv/)

先梳理流程(暂不编码)
找到对应的导航栏
image.png
复制标签对应的selector
image.png

body > div:nth-child(4) > div.yt-title > h3 > a

删除:nth-child(4)保留所需的: body > div > div.yt-title > h3 > a

代码获取到对应的链接后,请求地址(例:https://www.yeitu.com/meinv/xinggan/

image.png
同理找到对应的标签,复制selector
body > div.list_tags.w > div.list_tags_box > a
代码获取对应的地址,拼接上https://www.yeitu.com(例:https://www.yeitu.com/tag/siwameitui/
请求该地址
image.png
找到具体的图片标签,复制selector

tag_box > div > a > img

获取所需美女图片的地址

三、代码爬取

package main

import (
    "bufio"
    "fmt"
    "github.com/gocolly/colly"
    "os"
    "strconv"
)


func main() {
    yeitu()
}

// 亿图网爬取美女图
var baseUrl = "https://www.yeitu.com"

func yeitu() {
    var homeUrl = baseUrl + "/meinv/"
    fetch1(homeUrl)
}
func fetch1(url string) {
    col := colly.NewCollector()
    // 检测请求
    col.OnRequest(func(req *colly.Request) {
        fmt.Println("检测一个请求......")
    })
    // 检测响应
    col.OnResponse(func(r *colly.Response) {
        fmt.Println("检测一个响应......")
    })
    // 定位img标签。注册该函数,框架内部回调
    col.OnHTML("body > div > div.yt-title > h3 > a", func(elem *colly.HTMLElement) {
        // 获取标签对应属性的值。
        attr := elem.Attr("href")
        fetch2(attr)
    })

    col.Visit(url)
}
func fetch2(url string) {
    col := colly.NewCollector()
    // 检测请求
    col.OnRequest(func(req *colly.Request) {
        fmt.Println("检测一个请求......")
    })
    // 检测响应
    col.OnResponse(func(r *colly.Response) {
        fmt.Println("检测一个响应......")
    })
    // 定位img标签。注册该函数,框架内部回调
    col.OnHTML("body > div.list_tags.w > div.list_tags_box > a", func(elem *colly.HTMLElement) {
        // 获取标签对应属性的值。
        attr := elem.Attr("href")
        fetch3(baseUrl + attr)
    })

    col.Visit(url)
}
func fetch3(url string) {
    col := colly.NewCollector()
    // 检测请求
    col.OnRequest(func(req *colly.Request) {
        fmt.Println("检测一个请求......")
    })
    // 检测响应
    col.OnResponse(func(r *colly.Response) {
        fmt.Println("检测一个响应......")
    })
    // 定位img标签。注册该函数,框架内部回调
    col.OnHTML("#tag_box > div > a > img", func(elem *colly.HTMLElement) {
        // 获取标签对应属性的值。
        attr := elem.Attr("src")
        fmt.Println(attr + "\n")
    })
    col.Visit(url)
}
AI 代码解读

四、优化

可以使用多线程,并且分页爬取,保存的时候按图片分类存储

目录
打赏
0
0
0
0
41
分享
相关文章
Golang爬虫代理接入的技术与实践
Golang爬虫代理接入的技术与实践
猜谜游戏、彩云词典爬虫、SOCKS5代理的 Go(Golang) 小实践,附带全代码解释
猜谜游戏在编程语言实践都已经和 HelloWord 程序成为必不可少的新手实践环节,毕竟,它能够让我们基本熟悉 for 循环、变量定义、打印、if else 语句等等的使用,当我们基本熟悉该语言基础之后,就要学会其优势方面的程序实践,比如 Golang 所具备的爬虫及其并发优势。我们将采用彩云词典的英文单词翻译成中文的在线词典爬虫程序,及其改进版本,在并发上,我们将采用 SOCKS5 代理服务器的方式体验 Golang 语言的高并发易用性
102 0
猜谜游戏、彩云词典爬虫、SOCKS5代理的 Go(Golang) 小实践,附带全代码解释
Golang:colly 采用 Go 语言编写的 Web 爬虫框架
Golang:colly 采用 Go 语言编写的 Web 爬虫框架
178 0
Golang:colly 采用 Go 语言编写的 Web 爬虫框架
Golang福利爬虫
版权声明:本文可能为博主原创文章,若标明出处可随便转载。 https://blog.csdn.net/Jailman/article/details/81357563 没事的时候跑两把,穷人专用。
1192 0
golang爬虫初体验
最近在学习golang,看网上很多人都喜欢爬豆瓣,今天我就写了一个golang版的爬虫。对于python爬虫,我很了解,什么dom树,js异步,爬虫技术栈都是没问题的。
2832 0
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
193 6
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
306 4
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
【7月更文挑战第31天】在网络数据的海洋中,使用Python的`requests`库构建网络爬虫就像探索未知的航船。HTTP协议指导爬虫与服务器交流,收集信息。HTTP请求包括请求行、头和体,响应则含状态行、头和体。`requests`简化了发送各种HTTP请求的过程。
119 4
打造个性化网页爬虫:从零开始的Python教程
【8月更文挑战第31天】在数字信息的海洋中,网页爬虫是一艘能够自动搜集网络数据的神奇船只。本文将引导你启航,用Python语言建造属于你自己的网页爬虫。我们将一起探索如何从无到有,一步步构建一个能够抓取、解析并存储网页数据的基础爬虫。文章不仅分享代码,更带你理解背后的逻辑,让你能在遇到问题时自行找到解决方案。无论你是编程新手还是有一定基础的开发者,这篇文章都会为你打开一扇通往数据世界的新窗。
深入探索 Python 爬虫:高级技术与实战应用
本文介绍了Python爬虫的高级技术,涵盖并发处理、反爬虫策略(如验证码识别与模拟登录)及数据存储与处理方法。通过asyncio库实现异步爬虫,提升效率;利用tesseract和requests库应对反爬措施;借助SQLAlchemy和pandas进行数据存储与分析。实战部分展示了如何爬取电商网站的商品信息及新闻网站的文章内容。提醒读者在实际应用中需遵守法律法规。
249 66
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等