美文网首页
简单的图片爬虫

简单的图片爬虫

作者: 荒古遗尘狗贼 | 来源:发表于2020-03-09 22:49 被阅读0次

只需要修改myurl这个变量就可以了,这是一个最初级的版本

package main

import (

"fmt"

"io/ioutil"

"net/http"

"regexp"

)

//定义过滤的正则表达式

var temp =`"http?://[\s\S]+?"`

var photo =`https?://[^"]+?(\.((jpg)|(png)|(jpeg)|(gif)|(bmp)))`

var myurl string

var data=make(map[int]string)

var con =`\/`

func MyGet(){

//定义要爬取的网址

  myurl="https://www.79xte.com/tupian/85803.html"

  //myurl="https://www.baidu.com"

//resq,err:=http.PostForm(myurl,url.Values{"name":{"lisheng"}})

//发送Get请求,保存返回的内容

  resq,err:=http.Get(myurl)

if err!=nil{

fmt.Println("Get Testnet statues faile:",err)

}

//当函数结束时关闭资源

  defer resq.Body.Close()

//读取返回网页的body部分

  bytebody,err:=ioutil.ReadAll(resq.Body)

//将读取的二进制数组转换为string准备使用正则进行筛选。

  strbody:=string(bytebody)

//解析成一个正则对象

  re:=regexp.MustCompile(photo)

//匹配字符串的内容

  res:=re.FindAllStringSubmatch(strbody,-1)

//因为匹配完res是一个[][]string,所以就把内容取出来放到一个全局的map中备用。

  for key,_:=range res{

s:=res[key][0]

data[key]=s[0:]

}

}

func Dwonlocd(url string ,filename string)(ok bool){

resq,err:=http.Get(url)

defer resq.Body.Close()

if err!=nil{

fmt.Println("Get Error:",err)

}

bytes,err:=ioutil.ReadAll(resq.Body)

if err!=nil{

fmt.Println("ReadAll Erroe:",err)

}

//filename=`C:\Users\Administrator\Desktop\test\no\`+string(time.Now().Unix())+filename

  filename=`C:\Users\Administrator\Desktop\test\no\`+filename

fmt.Println(filename)

err=ioutil.WriteFile(filename,bytes,0666)

if err!=nil{

fmt.Println(err)

return false

  }else{

return true

  }

}

func main(){

var jishu int

MyGet()

for _,value:=range data{

temp=value

re:=regexp.MustCompile(con)

res:=re.ReplaceAllString(temp,"${n}s")

status:=Dwonlocd(value,res[7:])

fmt.Println(status)

jishu=jishu+1

}

fmt.Println("Success down photo ",jishu)

}

相关文章

网友评论

      本文标题:简单的图片爬虫

      本文链接:https://www.haomeiwen.com/subject/yuqvdhtx.html