当前位置: 首页 > news >正文

关于服装的商务网站建设策划书久久建筑网平台

关于服装的商务网站建设策划书,久久建筑网平台,如何给wordpress配置ssl证书,网站可以一个人做吗Go语言爬虫实战 目标 利用go语言爬取指定网站的图片。实现爬取网站任意页面所有所需的图片。实现使用go语言线程池开启多个线程爬取图片内容。最后实现创建多个文件夹存储图片。 爬取网站图片 步骤 对指定URL发去GET请求#xff0c;获取对应的响应。 resp, err : http.Get(…Go语言爬虫实战 目标 利用go语言爬取指定网站的图片。实现爬取网站任意页面所有所需的图片。实现使用go语言线程池开启多个线程爬取图片内容。最后实现创建多个文件夹存储图片。 爬取网站图片 步骤 对指定URL发去GET请求获取对应的响应。 resp, err : http.Get(url) 通过返回的响应获取网站的Html文本内容 BodyData, err : io.ReadAll(resp.Body) 通过观察Html文本中图片的地址并写出对应的正则表达式匹配所有符合的图片信息。 细节通过浏览器的开发者模式可以更快找到图片的地址 reImg : https?://[^]?(\.((jpg)|(png)|(jpeg)|(gif)|(bmp)))保存正则表达式的匹配结果并对其发起GET请求获取图片资源信息。 //创建正则表达式的对象 compile, err : regexp.Compile(reImg) //根据网站得Html内容匹配符合条件的结果-1的意思是匹配所有结果。正数则表示匹配对应数字的结果 allResult : compile.FindAllString(string(BodyData), -1) //获取图片资源 for i, resultUrl : range allResult {...}保存图片到指定的文件夹 //获取图片信息 data, err : io.ReadAll(get.Body) //创建指定文件夹 mkdirPath : ./img/ img_ strconv.Itoa(num) / os.MkdirAll(mkdirPath, os.ModePerm) //创建文件保存图片信息 file, err : os.OpenFile(mkdirPathcutImg_name, os.O_CREATE|os.O_RDWR, os.ModePerm) //将图片信息写入文件 _, err file.Write(data)实现爬取网站任意页面 思路 可以通过对网站的观察我们可以发现网站各个页面之间微小的变化然后将需要爬取的网页存储在一个切片当中之后重复第一步即可。 例如https://desk.3gbizhi.com/deskFJ/该网站的网页信息通过点击翻页可以发现一些规律 https://desk.3gbizhi.com/deskFJ/index_1.html 第一页https://desk.3gbizhi.com/deskFJ/index_2.html 第二页https://desk.3gbizhi.com/deskFJ/index_3.html 第三页所以这里我们只需改变后面的数字即可获取对应页数的网页信息并开始爬取图片信息。 代码 var start int var end int fmt.Printf(请输入爬取的开始页数:) fmt.Scanf(%d\n, start) fmt.Printf(请输入爬取的结束页数:) fmt.Scanf(%d\n, end) reImg : https?://[^]?(\.((jpg)|(png)|(jpeg)|(gif)|(bmp))) for i : 0; i end-start1; i {...urls[i].Url https://desk.3gbizhi.com/deskFJ/index_ strconv.Itoa(urls[i].Id) .html... }线程池开启多个线程 可以查看往期文章 https://editor.csdn.net/md/?articleId137082930 创建多个文件夹存储图片 创建文件夹 os.MkdirAll(mkdirPath, os.ModePerm) 在存储图片的时候获取图片的后缀以及获取图片原名称来命名图片 //截取名字和后缀 index : strings.LastIndex(resultUrl, /) name : resultUrl[index1:] 项目结构图片 项目代码 //pool.go package workerimport (logmathsync )// Args 参数结构体 type Args struct {Url stringReImg stringId int }// Task 定义任务函数类型 type Task func(num int, url string, reImg string) interface{}//type Task func() interface{}type Pool struct {worker inttasks *Queueevents chan struct{}results chan interface{}wg sync.WaitGroup }// NewPool 创建pool func NewPool(worker int) *Pool {return Pool{worker: worker,tasks: NewQueue(-1),events: make(chan struct{}, math.MaxInt),results: make(chan interface{}, worker*2),wg: sync.WaitGroup{},} }// AddTasks 任务添加 func (p *Pool) AddTasks(task Task) {err : p.tasks.Push(task)if err ! nil {log.Println(err)return}p.events - struct{}{} }// Start 启动工作池 func (p *Pool) Start(urls []Args) chan interface{} {var index -1var IndexLock sync.Mutexfor i : 0; i p.worker; i {p.wg.Add(1)go func() {for range p.events {task, err : p.tasks.Pop()if err ! nil {log.Println(err)continue}IndexLock.Lock()indexIndexLock.Unlock()if task, ok : task.(Task); ok {p.results - task(urls[index].Id, urls[index].Url, urls[index].ReImg)}}p.wg.Done()}()}return p.results }// Wait 关闭池子 func (p *Pool) Wait() {close(p.events)p.wg.Wait()close(p.results) }//queue.go package workerimport (fmtsync )type Queue struct {elements []interface{}lock sync.Mutexlimit int }// NewQueue 创建队列 func NewQueue(limit int) *Queue {return Queue{elements: make([]interface{}, 0, 1024),lock: sync.Mutex{},limit: limit,} }// Push 入队 func (q *Queue) Push(task interface{}) error {if q.limit ! -1 len(q.elements) q.limit {return fmt.Errorf(队列已满,请等待)}q.lock.Lock()defer q.lock.Unlock()q.elements append(q.elements, task)return nil }// Pop 出队 func (q *Queue) Pop() (interface{}, error) {if len(q.elements) 0 {return nil, fmt.Errorf(队列以空,等带任务入队)}task : q.elements[0]q.elements q.elements[1:]return task, nil }//main.go package mainimport (fmtiolognet/httposregexpsrc/workerstrconvstringstime )// 爬虫流程 // 1.对网站发送Get请求 // 2.读取网站信息 // 3.提取图片路径 // 4.下载图片,保存起来func main() {var start intvar end intfmt.Printf(请输入爬取的开始页数:)fmt.Scanf(%d\n, start)fmt.Printf(请输入爬取的结束页数:)fmt.Scanf(%d\n, end)pool : worker.NewPool(5)reImg : https?://[^]?(\.((jpg)|(png)|(jpeg)|(gif)|(bmp)))urls : make([]worker.Args, end-start1)for i : 0; i end-start1; i {urls[i].ReImg reImgurls[i].Id start iurls[i].Url https://desk.3gbizhi.com/deskFJ/index_ strconv.Itoa(urls[i].Id) .htmlpool.AddTasks(GetUrlImage)}pool.Start(urls)pool.Wait()fmt.Printf(爬取结束!) }func GetUrlImage(num int, url string, reImg string) interface{} {resp, err : http.Get(url)HandleError(err)//读取BodyData, err : io.ReadAll(resp.Body)HandleError(err)//解析数据compile, err : regexp.Compile(reImg)HandleError(err)allResult : compile.FindAllString(string(BodyData), -1)if allResult nil {fmt.Printf(%d号线程找不到对应数据\n, num)return nil}fmt.Printf(%d号线程已经获取到%d个图片路径,准备下载\n, num, len(allResult))for i, resultUrl : range allResult {//截取名字index : strings.LastIndex(resultUrl, /)name : resultUrl[index1:]get, err : http.Get(resultUrl)HandleError(err)//下载图片now : time.Now()data, err : io.ReadAll(get.Body)HandleError(err)fmt.Println(图片耗时:, time.Now().Sub(now))mkdirPath : ./img/ img_ strconv.Itoa(num) /os.MkdirAll(mkdirPath, os.ModePerm)file, err : os.OpenFile(mkdirPathcutImg_name, os.O_CREATE|os.O_RDWR, os.ModePerm)HandleError(err)_, err file.Write(data)HandleError(err)fmt.Printf(成功下载图片%d\n, i)}return nil }// HandleError 错误 func HandleError(err error) {if err ! nil {log.Println(err)return} } (mkdirPath, os.ModePerm) file, err : os.OpenFile(mkdirPath“cutImg_”name, os.O_CREATE|os.O_RDWR, os.ModePerm) HandleError(err) _, err file.Write(data) HandleError(err) fmt.Printf(“成功下载图片%d\n”, i) } return nil } // HandleError 错误 func HandleError(err error) { if err ! nil { log.Println(err) return } }
http://www.zqtcl.cn/news/662531/

相关文章:

  • html课程教学网站模板手机微信小程序开发教程
  • 用电脑做兼职的网站比较好食品网站建设网站定制开发
  • 网站开发 加密保护小程序制作开发进度表
  • 深圳坪山站外贸展示型网站建设
  • 手机端自定义做链接网站济南网站制作方案
  • 软件网站是怎么做的帮别人做网站赚多少钱
  • 纯静态网站 搜索功能佛山网站建设 奇锐科技
  • 四川省建设厅官方网站联系电话自己网站做虚拟币违法吗
  • 同城招聘网站自助建站2014 网站建设
  • 个人网站空间大小江油官方网站建设
  • 怎样建网站做什么网站能吸引流量
  • 做vi设计的网站网络营销推广思路
  • 简述网站设计流程沁水做网站
  • 南京公司网站建设怎么收费获奖网页设计
  • 网站域名试用期水墨风格网站源码
  • 长沙网站开长沙手机网站建设哪些内容
  • 网站建设算固定资产吗做泵阀生意到哪个网站
  • 佛山网站建设定制杭州人防质监站网址
  • 什么网站可以做微官网定制小程序制作一个需要多少钱
  • 扒下来的网站怎么做修改什么样是权网站重高的
  • 淘宝客做网站链接潍坊网站建设wfzhy
  • 怎样做二维码链接到网站上做的比较好的美食网站有哪些
  • 自动化科技产品网站建设响应式博客wordpress
  • 个人建站如何赚钱男人的好看网
  • 门户网站建设管理工作作一手房用什么做网站
  • 网站建设优化服务案例三合一网站程序
  • 网站长尾词关于制作网站的方案
  • 做二手衣服的网站有哪些wordpress单本小说采集
  • 曲靖市建设局网站品牌营销咨询公司是做什么的
  • wordpress网站统计代码放哪个文件putty搭建wordpress