博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用jsoup 如何从网页中下载图片
阅读量:6818 次
发布时间:2019-06-26

本文共 2997 字,大约阅读时间需要 9 分钟。

hot3.png

//jsoup_1.7.2, groovy_2.3.7import org.jsoup.Jsoupimport org.jsoup.nodes.Documentimport org.jsoup.select.Elementsimport java.net.* Document doc = Jsoup.connect("http://stock.591hx.com/article/2014-12-03/0000850005s.shtml").get()Elements img = doc.select("img")img.each{    //println(it.attr("src"))    def src = it.attr("src")    def dir = "./img"    def file = new File(dir)    if(!file.exists()){        file.mkdir()    }    if( src ==~ /.*\/hnimg\/201412\/03.*\.jpg/ ){        //println "yes"        DownLoadPic(src, dir)    }}def DownLoadPic(String sUrl, String dir){    URL url = new URL(sUrl)    def name = sUrl.split('/')[-1]    URLConnection   uc   =   url.openConnection()     InputStream   is   =   uc.getInputStream()    File   file   =   new   File(dir + '/' + name)     FileOutputStream   out   =   new   FileOutputStream(file);     int i=0    while   ((i=is.read())!=-1)   {         out.write(i)    }     is.close();}

Golang 版本:  利用 管道技术 和 goroutines

package mainimport (    "io/ioutil"    "log"    "net/http"    "os"    "regexp"    //"strconv"    "strings"    "sync")var urlist = [...]string{"http://stock.591hx.com/article/2014-12-03/0000850005s.shtml"}var album chan stringvar w sync.WaitGroupvar dir stringfunc main() {    dir = "tmp_chenjo/"    err := os.Mkdir(dir, 0777)    if err != nil {        isexist := os.IsExist(err)        log.Println(isexist)    }    album = make(chan string, 200)    for _, v := range urlist {        w.Add(1)        go GetAlbum(v)        w.Wait()    }}func GetAlbum(url string) {    data := GetUrl(url)    body := string(data)    //

    part := regexp.MustCompile(`
`)    match := part.FindAllStringSubmatch(body, -1)    for _, v := range match {        if m, _ := regexp.MatchString(`.*/hnimg/201412/03/.*\.jpg`, v[1]); !m {            continue        }        //println(v[1])        album <- v[1]        w.Add(1)        go GetItem()    }    w.Done()}func GetItem() {    url := <-album    println(url)    defer func() {        ret := recover()        if ret != nil {            log.Println(ret)            w.Done()        } else {            w.Done()        }    }()    //data := GetUrl(url)    //if len(data) > 10 {    //body := string(data)    //part := regexp.MustCompile(`bigimgsrc="(.*)"`)    //match := part.FindAllStringSubmatch(body, -1)    //for _, v := range match {    str := strings.Split(url, "/")    length := len(str)    source := GetUrl(url)    name := str[length-1]    file, err := os.Create(dir + name)    if err != nil {        panic(err)    }    size, err := file.Write(source)    defer file.Close()    if err != nil {        panic(err)    }    log.Println(size)    //}    //}}func GetUrl(url string) []byte {    ret, err := http.Get(url)    if err != nil {        log.Println(url)        status := map[string]string{}        status["status"] = "400"        status["url"] = url        panic(status)    }    body := ret.Body    data, _ := ioutil.ReadAll(body)    return data}

转载于:https://my.oschina.net/u/553266/blog/369141

你可能感兴趣的文章
并发编程之线程
查看>>
python开发部署时新增数据库中表的方法
查看>>
参加2018之江杯全球人工智能大赛 :视频识别&问答(四)
查看>>
阿里云跨地域访问私网
查看>>
通过angularJS官方案例快速入门
查看>>
Introduction of OpenCascade Foundation Classes
查看>>
Surface Normal Vector in OpenCascade
查看>>
Educational Codeforces Round 38 (Rated for Div. 2)
查看>>
内部类初识
查看>>
【python3的学习之路一】输入和输出
查看>>
在Eclipse中生成接口的JUnit测试类
查看>>
Oracle SQL常用内置系统函数总结
查看>>
[POJ] #1005# I Think I Need a Houseboat : 浮点数运算
查看>>
西湖论剑WP
查看>>
数组Array,集合List与字符串String,整形int的get类方法。
查看>>
【转】浏览器内核
查看>>
面试题:查找旋转数组中的某一元素
查看>>
uva12298(生成函数)
查看>>
C++ variable_template
查看>>
第十七章、程序管理与 SELinux 初探 工作管理 (job control)
查看>>