首页 > 其他分享 >Go语言和net库结合,轻松搞定喜马拉雅视频采集

Go语言和net库结合,轻松搞定喜马拉雅视频采集

时间:2023-11-02 16:37:27浏览次数:45  
标签:视频 搞定 http err GET fmt Go net resp

Go语言和net库结合,轻松搞定喜马拉雅视频采集_Parse

昨天一个小哥问我,能不能用Go语言和net库编写一个采集喜马拉雅视频的采集程序,因为网站上有太多他需要的学习资源,所以来找我帮忙。我大概看了下网站策略,这个爬虫写起来不是特别难,现在就给大家简单分享一下。

```go
package main
import (
"fmt"
"io/ioutil"
"net/http"
"net/url"
"strings"
)
func main() {
// 创建请求头
reqHeaders := http.Header{}
reqHeaders.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3")
// 创建一个代理服务器的URL对象
proxyURL, _ := url.Parse("http://" + "www.duoip.cn/get_proxy" + ":8000")
// 创建一个http客户端
client := &http.Client{
Transport: &http.Transport{
Proxy: http.ProxyURL(proxyURL),
},
}
// 发送GET请求到https://www.ximalaya.com/的首页
resp, err := client.Get("https://www.ximalaya.com/")
if err != nil {
fmt.Println("发送GET请求失败: ", err)
return
}
defer resp.Body.Close()
// 读取响应体
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("读取响应体失败: ", err)
return
}
// 解析响应体内容
parsedBody := strings.Split(string(body), "
videoLink = strings.Trim(videoLink, "\"")
// 发送GET请求到视频链接
resp, err := client.Get(videoLink)
if err != nil {
fmt.Println("发送GET请求失败: ", err)
return
}
defer resp.Body.Close()
// 读取响应体
videoBody, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("读取响应体失败: ", err)
return
}
// 输出视频链接和视频内容
fmt.Println("视频链接: ", videoLink)
fmt.Println("视频内容: ", string(videoBody))
}
}
}
```

现在给大家简单讲解一下,以上代码使用了Go语言的net/http库发送HTTP请求,使用了requests库的代理功能。程序首先会发送GET请求喜马拉雅的首页,然后解析响应体内容,提取出所有的免费视频链接,然后发送GET请求到每个视频链接,获取视频内容,并输出视频链接和视频内容。这个需要我们注意的是,我写的这个程序只是一个基础的爬虫程序,没有做任何错误处理和异常处理,实际使用时需要根据你自己的情况进行适当的修改和优化。希望能对大家在编写相关爬虫程序的过程中有所启发。

标签:视频,搞定,http,err,GET,fmt,Go,net,resp
From: https://blog.51cto.com/u_14448891/8149973

相关文章

  • 怎样使用Go语言+NET库搞定饿了么采集
    饿了么是一个集在线外卖、新零售、即时配送和餐饮供应链等业务的一个平台,也是我们日常中使用比较多的一个平台。每次点外卖的时候,那么多的商家,我们要比对价格、看评价,看看到底怎么点餐比较划算,这是一个Go语言的爬虫程序,所以今天,我就使用net库来实现对饿了么内容的采集,方便我们每次......
  • ZEGO 教程 | RTC + AI 视觉的最佳实践(移动端)
    ​ ​摘要:帮助开发者在音视频场景中快速获得AI视觉功能——美颜、滤镜、背景抠图等。文|即构 NativeSDK开发团队Z世代作为社会新的消费主力,追求个性、热爱新奇事物,青睐与酷炫新奇的玩法、紧跟娱乐潮流。AI+音视频的结合,作为在音频和视频之外第三个场景玩法创新的支撑点......
  • Go定时任务实现
    定时任务调度是常见的场景,从简单点本地任务调度,到分布式定时任务调度,被广泛的使用。本文汇总了awesome-go里全部的本地定时任务库,并横向对比其实现原理,以及使用场景和优缺点,欢迎收藏随时参考。本文收纳的本地定时任务库如下:onatm/clockwerkwithself/clockworkkr/go-cronro......
  • Go--cron定时任务
    Cron是Go中用于设置定时任务的一个库,需要注意的是,Cron库分两个大版本,v1.2和v3.0,其功能和goget地址都是不同的,注意区分。v1.2官方文档:https://pkg.go.dev/github.com/robfig/cronv3官方文档:https://pkg.go.dev/github.com/robfig/cron/v3区别:v1.2版本默认支持精确到秒的cron......
  • Kubernetes学习笔记-安装
    准备工作操作系统:Centos7.6容器环境:Docker所需工具:kubectl,minikube安装Docker#安装yum工具包yum-yinstallyum-utils#添加yum源yum-config-manager--add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#安装docker社区版yuminstalld......
  • 分享一个项目:`learning_go_plan9_assembly`, 学习 golang plan9 汇编
    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!cnblogs博客zhihuGithub公众号:一本正经的瞎扯近期在学习golangplan9汇编,总算基本做到了手写汇编,并整理了很多笔记。plan9汇编的资料少,难学,难用。可能也有想学习汇编的人会遇到与我一样的问题。于是把笔记进......
  • Delphi使用TNetHTTPClient上传文件java接收测试
    Delphi使用TNetHTTPClient上传文件java接收测试上传客户端新建一个应用,拖入一个TButton按扭,一个TMemo多行文件显示框,一个TNetHttpClient,一个OpenDialog文件打开对话框。双击按扭添加代码  uses  System.Net.Mime;procedureTForm1.Button1Click(Sender:TObject);var......
  • vue3 google浏览器格式化控制台打印的数据
    ......
  • ASP.NET Core Filter
    Filter在ASP.NETCore中允许code在指定的请求阶段前或者后执行。Filter在ASP.NETCore方法请求管道中运行,有时被称作filterpipeline,filterpipeline在ASP.NETCore选择Action执行。 Filter分类每个filtertype在filterpipeline的不同阶段执行。AuthorizationFilter:第一......
  • .NET6 配置 AutoMapper 与 AutoFac
    AutoMapper 概述1、什么是AutoMapper简单来说,AutoMapper就是一个用C#语言开发的一个轻量的处理一个实体对象到另外一个实体对象映射关系的组件库 官网地址:AutoMapper 文档地址:AutoMapper—AutoMapperdocumentation 2、为什么要用AutoMapper层与层之间的数据转换......