go - 如何在 Go 中加入 URL?

标签 go web-scraping web-crawler

我正在 GO 中创建一个网络爬虫。并经过解析和页面上的所有 URL,在某些情况下我会获得不同格式的超链接:

  • /my/next/page
  • 我的/下一页/页面
  • //my_next_page
  • https://different-domain.com

  • 如您所见,这里有很多组合,在某些情况下,URL 是完全不同的域。 URL 的常规连接在这里不起作用。如何正确连接 URL,以便每个生成的 URL 连接都可以再次输入爬虫以持续解析和抓取?

    最佳答案

    由于超链接的不同,URL 的处理方式也不同。如上所述, anchor 标记中的超链接可以有多种格式。这是处理请求的 URL 与爬网的连接以及分别到该 URL 的超链接的解决方案。

    func joinURLs(baseURL, hyperlink string) string {
        parse, err := url.Parse(hyperlink)
        if err != nil {
            return ""
        }
        base, err := url.Parse(baseURL)
        if err != nil {
            return ""
        }
        nextURLToCrawl := base.ResolveReference(parse)
        return nextURLToCrawl.String()
    }
    

    这个函数最好的地方是它可以处理不同域上的函数,而无需维护检查主机名是否相同。现在您的代码更具声明性。

    关于go - 如何在 Go 中加入 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60993326/

    相关文章:

    javascript - 如何在 javascript 页面上单击带有 selenium 的按钮

    Python网络爬虫,深度问题

    go - 文档类型与 goquery

    go - golang 中的类型声明重要性,零值

    linux - TERM=dumb 终端必须具备的功能

    indexing - 在放置 robots.txt 后,Google 何时会停止显示网站页面?

    Python 3.2 Beautiful Soup 替代品

    google-app-engine - 如何 fmt.Println() 内存不是由 go 程序分配的?

    javascript - 使用 Python-BeautifulSoup 和 urllib 抓取奇怪的 html 设置

    html - 为什么我的使用跟随兄弟的 XPath 不起作用?