资讯专栏INFORMATION COLUMN

Python爬虫:给我一个链接,虎牙视频随便下载

lvzishen / 1189人阅读

摘要:爬取的原理我们来到虎牙视频主界面,链接为虎牙视频主界面然后随便点击一下某个视频的发布者,来到这个发布者的主界面,点击到视频,如下我们可以看到这个界面下有许多视频可以观看,那么怎样下载呢我们随便点击其中的一个视频进入,按

1. 爬取的原理


我们来到虎牙视频主界面,链接为:虎牙视频主界面
然后随便点击一下某个视频的发布者,来到这个发布者的主界面,点击到视频,如下:

我们可以看到这个界面下有许多视频可以观看,那么怎样下载呢?我们随便点击其中的一个视频进入,按电脑键盘的F12来到开发者模式,然后点击network->js->找到相应的网址->视频下载链接
我们可以找到相应的视频下载链接。
那么怎样发起请求呢?这是一个get请求,网址为:https://v-api-player-ssl.huya.com,请求参数如下:

那么这些请求参数具体代表什么意思呢?

2. 具体怎样实现

小编经过分析发现,

  • 第一个参数callback的值应该是:jQuery+一段随机字段+_+时间戳,既然有一段随机字段,那么这个不改直接用应该也是可以的;
  • 第二个参数r的值应该是固定的,这个直接用就行;
  • 第三个参数vid,也就是的视频的id,其实这个参数就是这个视频在服务器上的数据库中的id(小编猜测的,毕竟小编最近也在做相应的项目,也会使用到相应的id编号),这个参数在发布者视频下可以通过re正则表达式获取;
  • 第四个参数是format,应该是类型,这个应该也是固定的,直接copy即可;
  • 第五个参数也就是时间戳,直接copy或者写都行。

3. 代码和运行结果

代码如下:

import requestsfrom lxml import etreefrom crawlers.userAgent import useragentimport reimport jsonimport timeclass video(object):    def __init__(self,url):        # url 为输入的链接        self.url = url        self.page = 0        self.u = useragent()    def getPages(self):        # 获取当前链接界面的总页数        headers = {"user-agent":self.u.getUserAgent()}        rsp = requests.get(url=self.url,headers=headers)        html = etree.HTML(rsp.text)        aList = html.xpath("//div[@class="user-paginator"]/ul/li/a")        print("视频总页数为:",aList[-2].text)        self.page = int(input("请输入想下载的视频页数:"))    def downloadVideo(self):        # 下载视频的方法,并没有下载视频,只是获取视频的下载链接        for i in range(1,self.page+1):            if i == 1:                url2 = "{}?sort=news".format(self.url)            else:                url2 = "{}?sort=news&p={}".format(self.url,i)            headers = {"user-agent":self.u.getUserAgent()}            rsp = requests.get(url=url2,headers=headers)            html2 = etree.HTML(rsp.text)            hrefs = html2.xpath("//div[@class="content-list"]/ul/li/a")            for j in range(len(hrefs)):                href = hrefs[j].xpath("./@href")[0]                title = hrefs[j].xpath("./@title")[0]                print("视频名称为:",title)                vid = re.findall("/play/(/d*).html",href)[0]   # 获取vid                self.getDownloadHref(vid=vid)                print("#"*50)            time.sleep(2)    def getDownloadHref(self,vid):        url3 = "https://v-api-player-ssl.huya.com"        params={"callback": "jQuery1124017458848743440036_1632126349635",                "r": "vhuyaplay/video",                "vid": vid,                "format": "mp4,m3u8",                "_": "1632126349643"}        rsp = requests.get(url=url3,headers={"user-agent":self.u.getUserAgent()},params=params)        infos = rsp.text        lindex = infos.find("(")        rindex = infos.find(")")        dict2 = json.loads(infos[lindex+1:rindex])        list2 = dict2["result"]["items"]        v_list2=["高清","原画","流畅"]        for i in range(len(list2)):            print(v_list2[i],list2[i]["transcode"]["urls"][0])if __name__ == "__main__":    url = input("请输入视频链接:")    v = video(url)    v.getPages()    v.downloadVideo()

其中crawlers模块如果读者一直阅读小编的博客,就知道是来干什么的,如果读者是第一次来阅读小编的博客,可以去看看小编的这篇博客,博客链接为:Python爬虫:制作一个属于自己的IP代理模块
另外,小编并没有实现下载视频的功能,只是把视频的下载链接给提取出来了哈!爬虫需要遵守相应的法律法规,不能对服务器造成很大的负担,还有,就是,有的视频时间比较长,代码实现下载效果还没有直接copy下载链接到网页端下载那么高效,当然,有兴趣的读者可以自己去试试哈!

看看运行效果吧!

运用Python爬虫下载虎牙视频

对了,需要注意输入的视频链接喔!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/120004.html

相关文章

  • 首次公开,整理12年积累的博客收藏夹,零距离展示《收藏夹吃灰》系列博客

    摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...

    Harriet666 评论0 收藏0
  • 如何用Python抓抖音上的小姐姐

    摘要:比如分钟破译朋友圈测试小游戏文章里用的方法但有些根本就没有提供网页端,比如今年火得不行的抖音。所以常用的方式就是通过在电脑上装一些抓包软件,将手机上的网络请求全部显示出来。总结下,重点是的抓取,关键是配置代理证书,难点是对请求的分析。 爬虫的案例我们已讲得太多。不过几乎都是 网页爬虫 。即使有些手机才能访问的网站,我们也可以通过 Chrome 开发者工具 的 手机模拟 功能来访问,以便...

    FingerLiu 评论0 收藏0
  • 一步步爬取Coursera课程资源

    摘要:至此登录功能初步实现。为了方便我们快速定位到每节课的所有资源,可以把一节课的所有资源文件均命名为课名文件类型。可以看一下一个测试例子中的文件,部分内容如下到这里为止,我们已经成功完成爬取课程资源的目标,具体的代码放在上。 原文地址 有时候我们需要把一些经典的东西收藏起来,时时回味,而Coursera上的一些课程无疑就是经典之作。Coursera中的大部分完结课程都提供了完整的配套教学资...

    Simon_Zhou 评论0 收藏0
  • Python从入门到转行

    摘要:学了大半年之后成功转行做前端了。包含大量其他神经网络库中的包装器和抽象,其中最值得注意的是,其中也包含一些机器学习的实用模块。它是轻量级可扩展的神经网络工具包,同时拥有友好的界面,可供机器学习的训练和预测使用。 题记:大二的时候发现人生苦短,所以信了拍神,开始学Python。学了大半年之后成功转行做前端了。来写个教程帮助大家入门Python。 Python零基础入门 零基础入门就得从最...

    ingood 评论0 收藏0
  • Python 网络爬虫实战:抖音短视频去水印爬虫详解

    摘要:我们知道,在抖音中下载到的视频是有水印的,这就催生出了很多抖音短视频去水印的解析网站,小程序等。禁止重定向,设置运行结果,是一个标签,便是重定向后的地址。 我们知道...

    hlcc 评论0 收藏0

发表评论

0条评论

lvzishen

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<