程序开发 · 2024年10月19日

Colly 报错“invalid memory address or nil pointer dereference”,如何解决?

来到GOLANG的大家,相信都是编程学习爱好者,希望在这里学习GOLANG相关编程知识。下面本篇文章就来带大家聊聊《Colly 报错“invalid memory address or nil pointer dereference”,如何解决?》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!,
,
colly 报错:“invalid memory address or nil pointer dereference”,原代码摘自问题描述:,代码在第55行执行 os.create 操作时发生空指针引用错误。这是因为在对 srcref 进行拆分操作时,没有检查 srcref 是否为 nil,或者对应的文件和目录是否存在。,修改后的代码如下:,今天关于《Colly 报错“invalid memory address or nil pointer dereference”,如何解决?》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注GOLANG公众号!,colly 报错:“invalid memory address or nil pointer dereference”,来到GOLANG的大家,相信都是编程学习爱好者,希望在这里学习GOLANG相关编程知识。下面本篇文章就来带大家聊聊《Colly 报错“invalid memory address or nil pointer dereference”,如何解决?》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!,

当前位置: > > > > Colly 报错“invalid memory address or nil pointer dereference”,如何解决?

Colly 报错“invalid memory address or nil pointer dereference”,如何解决?

2024-11-18 20:54:43
0浏览
收藏

来到GOLANG的大家,相信都是编程学习爱好者,希望在这里学习GOLANG相关编程知识。下面本篇文章就来带大家聊聊《Colly 报错“invalid memory address or nil pointer dereference”,如何解决?》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!

colly 报错:“invalid memory address or nil pointer dereference”

原代码摘自问题描述:

func downloadimages(e *colly.htmlelement) {
    srcref := desturl + e.attr("src")
    res, _ := http.get(srcref)
    if strings.contains(srcref, "http") && strings.contains(srcref, ".jpg") {
        arr := strings.split(srcref, "/")
        filename := strings.split(arr[len(arr)-1], ".")[0]
        fmt.println("filename", filename)
        f, _ := os.create("./images/" + filename + ".jpg")
        defer f.close()
        written, _ := io.copy(f, res.body)

        fmt.println("info", written)
    }
}

代码在第55行执行 os.create 操作时发生空指针引用错误。这是因为在对 srcref 进行拆分操作时,没有检查 srcref 是否为 nil,或者对应的文件和目录是否存在。

修改后的代码如下:

func downloadImages(e *colly.HTMLElement) {
    srcRef := destUrl + e.Attr("src")
    if srcRef == "" {
        return
    }

    res, err := http.Get(srcRef)
    if err != nil {
        log.Printf("Failed to fetch image: %v", err)
        return
    }

    if strings.Contains(srcRef, "http") && strings.Contains(srcRef, ".jpg") {
        arr := strings.Split(srcRef, "/")
        fileName := strings.Split(arr[len(arr)-1], ".")[0]
        fmt.Println("fileName", fileName)

        path := "./images/" + fileName + ".jpg"
        f, err := os.Create(path)
        if err != nil {
            log.Printf("Failed to create file: %v", err)
            return
        }
        defer f.Close()

        written, err := io.Copy(f, res.Body)
        if err != nil {
            log.Printf("Failed to write to file: %v", err)
            return
        }

        fmt.Println("info", written)
    }
}

今天关于《Colly 报错“invalid memory address or nil pointer dereference”,如何解决?》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注GOLANG公众号!

触控板使用不了 win11系统华硕触控板无法使用的解决方法
如何通过 JavaScript 在弹窗中获取 ID 值并将其作为链接参数进行页面跳转?