python壁纸4k_Python爬取4k高清动漫壁纸

[Python] 纯文本查看 复制代码package main

package main

import (

"bytes"

"fmt"

"io/ioutil"

"log"

"net/http"

"net/url"

"os"

"strconv"

"strings"

"sync"

"time"

"github.com/PuerkitoBio/goquery"

"github.com/gocolly/colly"

)

// 判断文件夹是否存在(公共方法)

func PathExists(path string) (bool, error) {

_, err := os.Stat(path)

if err == nil {

return true, nil

}

if os.IsNotExist(err) {

return false, nil

}

return false, err

}

// 判断所给路径是否为文件夹

func IsDir(path string) bool {

s, err := os.Stat(path)

if err != nil {

return false

}

return s.IsDir()

}

// 判断所给路径是否为文件

func IsFile(path string) bool {

return !IsDir(path)

}

// 判断所给路径文件/文件夹是否存在

func Exists(path string) bool {

_, err := os.Stat(path) //os.Stat获取文件信息

if err != nil {

if os.IsExist(err) {

return true

}

return false

}

return true

}

var waitGroup = new(sync.WaitGroup)

//下载图片(存在则跳过)

func download(name string, imgurl string, path string, imgtype string) {

isExi := Exists(path + "//" + name + "." + imgtype)

// fmt.Printf(strconv.FormatBool(isExi))

if isExi {

fmt.Printf("开始下载:文件已存在!\n")

waitGroup.Done()

return

}

fmt.Printf("开始下载:%s\n", imgurl)

res, err := http.Get(imgurl)

if err != nil || res.StatusCode != 200 {

fmt.Printf("下载失败:%s", res.Request.URL)

}

fmt.Printf("开始读取文件内容,url=%s\n", imgurl)

data, err2 := ioutil.ReadAll(res.Body)

if err2 != nil {

fmt.Printf("读取数据失败")

}

ioutil.WriteFile(fmt.Sprintf(path+"//%s."+imgtype, name), data, 0644)

//if failed, sudo chmod 777 pic2016/

//计数器-1

waitGroup.Done()

}

// 解析URL-返回Colly控制器

func OpenUrl(urlstr string) *colly.Collector {

//解析URL

u, err := url.Parse(urlstr)

if err != nil {

log.Fatal(err)

}

c := colly.NewCollector()

// 超时设定

c.SetRequestTimeout(100 * time.Second)

// 指定Agent信息

c.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20110101 Firefox/71.0"

c.OnRequest(func(r *colly.Request) {

// Request头部设定

r.Headers.Set("Host", u.Host)

r.Headers.Set("Connection", "keep-alive")

r.Headers.Set("Accept", "*/*")

r.Headers.Set("Origin", u.Host)

r.Headers.Set("Referer", urlstr)

r.Headers.Set("Accept-Encoding", "gzip, deflate")

r.Headers.Set("Accept-Language", "zh-CN, zh;q=0.9")

})

return c

}

// 根据图片地址下载图片

func UrlDow(band string, prefix string, urlpath string, s *goquery.Selection, i int, _dir string, err error) {

c := OpenUrl(band)

// c.OnRequest(func(r *colly.Request) {

// // waitGroup.Done()

// })

// c.OnHTML("title", func(e *colly.HTMLElement) {

// })

c.OnResponse(func(resp *colly.Response) {

fmt.Println("response received 1", resp.StatusCode)

fmt.Printf(band + "\n")

title := s.Text()

fmt.Printf("链接 %d: %s - %s\n", i, title, band)

waitGroup.Add(1)

go download(urlpath, band, _dir, "png")

})

c.OnError(func(resp *colly.Response, errHttp error) {

err = errHttp

})

c.OnScraped(func(r *colly.Response) {

waitGroup.Done()

})

err = c.Visit(band)

}

// 根据页码地址下载图片

func PageUrlDow(urlstr string, _dir string, err error, sec int) {

// urlstr := "https://wallhaven.cc/toplist?page=1"

c := OpenUrl(urlstr)

c.OnHTML("title", func(e *colly.HTMLElement) {

fmt.Println("title:", e.Text)

})

c.OnScraped(func(r *colly.Response) {

waitGroup.Done()

})

//获取图片列表

c.OnResponse(func(resp *colly.Response) {

fmt.Println("response received", resp.StatusCode)

// goquery直接读取resp.Body的内容

htmlDoc, err := goquery.NewDocumentFromReader(bytes.NewReader(resp.Body))

// fmt.Printf(htmlDoc.Html()) //查看页面内容

if err != nil {

log.Fatal(err)

}

// 找到抓取项

下所有的a解析

htmlDoc.Find("div[class=boxgrid] img").Each(func(i int, s *goquery.Selection) {

temp, bl := s.Attr("data-src")

if bl != true {

return

// log.Fatal(err)

}

imgurl := strings.Replace(temp, "thumb-350-", "", -1)

fmt.Printf(imgurl + "\n") //查看链接

waitGroup.Add(1)

urlpath := strings.Split(imgurl, "/")[len(strings.Split(imgurl, "/"))-1]

urlpath = strings.Split(urlpath, ".")[0]

prefix := urlpath

fmt.Println("\n文件名:" + urlpath)

fmt.Println("\n暂无:" + prefix)

go UrlDow(imgurl, prefix, urlpath, s, i, _dir, err)

// go ImgUrlDow(imgurl, _dir, err, 2)

})

})

c.OnError(func(resp *colly.Response, errHttp error) {

err = errHttp

})

err = c.Visit(urlstr)

}

//主线程

func main() {

//创建文件夹

_dir := "./Wnacg"

exist, err := PathExists(_dir)

if err != nil {

fmt.Printf("get dir error![%v]\n", err)

return

}

if exist {

fmt.Printf("has dir![%v]\n", _dir)

} else {

fmt.Printf("no dir![%v]\n", _dir)

// 创建文件夹

err := os.Mkdir(_dir, os.ModePerm)

if err != nil {

fmt.Printf("mkdir failed![%v]\n", err)

} else {

fmt.Printf("mkdir success!\n")

}

}

now := time.Now()

fmt.Printf("多页模式:下载0-n页\n")

fmt.Printf("中断模式:下载n-m页\n")

isFirst := "10"

fmt.Printf("请输入n或n,m选择-多页模式或者中断模式(默认为多页模式n=10): ")

fmt.Scanln(&isFirst)

urlstr := "https://wall.alphacoders.com/by_sub_category.php?id=239594&name=Fate%2FGrand+Order+Wallpapers"

fmt.Printf("请输入页面地址: ")

fmt.Scanln(&urlstr)

num := strings.Split(isFirst, ",")

if len(num) == 1 {

int, err := strconv.Atoi(num[0])

if err != nil {

fmt.Printf("get dir error![%v]\n", err)

return

}

for i := 1; i <= int; i++ {

if i == 1 {

waitGroup.Add(1)

go PageUrlDow(urlstr, _dir, err, 2)

} else {

waitGroup.Add(1)

go PageUrlDow(urlstr+"&page="+strconv.Itoa(i), _dir, err, 2)

}

}

} else {

intone, err := strconv.Atoi(num[0])

if err != nil {

fmt.Printf("get dir error![%v]\n", err)

return

}

inttwo, errt := strconv.Atoi(num[1])

if errt != nil {

fmt.Printf("get dir error![%v]\n", err)

return

}

for i := intone; i <= inttwo; i++ {

if i == 1 {

waitGroup.Add(1)

go PageUrlDow(urlstr, _dir, err, 2)

} else {

waitGroup.Add(1)

go PageUrlDow(urlstr+"&page="+strconv.Itoa(i), _dir, err, 2)

}

}

}

//等待所有协程操作完成

waitGroup.Wait()

fmt.Printf("下载总时间:%v\n", time.Now().Sub(now))

time.Sleep(60 * time.Second)

}

### 回答1: Python 4k2_far 数据集是一个用于图像分类的数据集,其中包含了约4000个不同类别的图像数据,每个类别有大约2张图片。该数据集的目的是用于训练和测试深度学习模型,以实现对不同类别图像的准确分类。 该数据集的图像分辨率为4k2,这意味着每个图像有4000个像素列和2000个像素行,总共8000000个像素。高分辨率图像能提供更多的细节和信息,可以帮助模型更准确地学习和识别图像中的特征。 对于数据集的使用,我们可以将其分为训练集和测试集。通常,我们将70%的数据用于训练模型,剩下的30%用于测试模型的性能。在训练过程中,我们可以使用不同的深度学习算法(如卷积神经网络)对图像进行训练,以学习如何对图像进行分类。 使用该数据集进行图像分类的应用非常广泛,可以应用于人脸识别、物体识别、视觉检测等领域。通过对大量不同类别的图像进行训练,模型可以学习到不同类别图像的特征,并在测试集上进行准确的分类。这有助于提高图像分类的精度和准确率,使得计算机可以更好地理解和处理图像信息。 总的来说,Python 4k2_far 数据集是一个用于图像分类的高分辨率数据集,在深度学习模型训练过程中具有重要的应用和意义。它为研究人员和开发者提供了一个可用于测试和评估各种图像分类算法的标准数据集。通过对图像特征的学习和分类,可以进一步推动计算机视觉和人工智能领域的发展。 ### 回答2: Python 4k2_far数据集是一个与Python编程语言相关的数据集。这个数据集包含了许多关于Python的有用信息和资源,可以帮助Python开发者更好地学习和使用Python。 首先,4k2_far数据集中收集了许多Python常用的库和框架的文档和教程。这些文档可以帮助新手快速入门Python,了解各种库和框架的使用方法和示例。同时,对于有经验的开发者来说,这些文档也提供了深入学习和掌握Python各个方面的机会。 此外,4k2_far数据集还包含了Python的案例研究和实例代码。这些案例研究和实例代码展示了Python在各个领域的应用,包括数据分析、机器学习、网络虫、Web开发等。通过学习这些案例和实例代码,开发者们可以更好地了解如何将Python应用于实际项目中,提高自己的开发能力和实践经验。 此外,4k2_far数据集中还包含了许多Python编程的指南和技巧。这些指南和技巧提供了关于Python编码规范、最佳实践和常见错误的解决方案等方面的建议。对于那些希望提高自己的Python编程技巧和代码质量的开发者来说,这些指南和技巧无疑是非常有价值的。 总之,Python 4k2_far数据集是一个非常有用的资源,可以帮助Python开发者在学习和实践过程中更好地理解和运用Python编程语言。无论是入门新手还是有经验的开发者,都可以从这个数据集中获得很多知识和经验,提高自己的技能水平。 ### 回答3: Python 4k2_far数据集是一个包含4,000个样本的数据集,它用于训练和测试机器学习模型。这个数据集主要用于辅助研究人员和开发人员在人工智能领域,特别是图像识别、目标检测和图像分割方面的工作。 这个数据集采用了分辨率为4K(即4,096 x 2,160)的超高清图像。每个样本图像都以JPEG格式存储,并通过标签来指示图像中的物体或场景的类别。这些类别可以包括人物、动物、自然景观、建筑物等等。 使用Python编程语言进行数据处理和分析非常方便,因为Python拥有丰富的科学计算库和数据处理工具。可以使用Python的图像处理库(如PIL或OpenCV)来加载和处理这些图像数据。同时,可以使用Python的机器学习库(如Scikit-learn或TensorFlow)来构建和训练模型,以实现图像分类、目标检测和图像分割等任务。 为了使用这个数据集,可以首先将图像数据加载到Python环境中,并将其转换为适合机器学习模型的格式。然后,可以将数据集分为训练集和测试集,并使用训练集来训练模型。训练完成后,可以使用测试集来评估模型的性能。 通过使用Python和这个数据集,我们可以进行各种图像处理和机器学习实验,探索新的算法和技术在图像识别和相关领域的应用。这不仅对于研究人员和开发人员来说是一个宝贵的资源,也可以帮助推动人工智能技术的发展和创新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值