近几天经常玩全民k歌,最近用全民k歌录了一首mv,结果大家听了反应还不错,就想着把原视频再下载下来,然后保存在手机里,结果发现,全民k歌里面下载音频和mv 都需要vip 才可以,哇...我是视频的上传者,竟然都还不让我自己下载!!!!,不行,我可是程序员,于是,便思考着如何写个爬虫把数据爬下来....

首先,第一反应就是把打开歌曲链接,f12审查元素.

会发现,我们的视频链接在一个video 标签内的src 里面,那这不就简单了?直接爬整个页面的html 代码,然后正则匹配拿到src 里面的链接不就好了吗?

结果呢,爬下来发现根本没有video 这个标签!

后来自己有开了一个音频,看了一下元素,发现原来video 标签的地方变成了audio 标签,这说明啥?说明人家的页面是动态生成的啊,然后跑去看了一下人家的js ,的确如此.

那可咋整?小编也是初学,以前爬过百度图片的动态页面,知道用带有请求数据访问然后得到json 的data数据,再把 data里面自己要用的数据拿出来就好了.但是这个...好像有点不一样.翻遍了所有的包都没找到有用的data数据

结果发现这个请求参数有点意思,有一个shareid 就是网址中s=key 的key,当然啦 这两个肯定是要一样的,但是问题是我们拿到的链接就已经包含了这个shareid ,也就是说,我们不需要再向url 中添加其他的请求参数,我们就可以拿到视频加载后的html 代码了,不过这个video 标签我该怎么让他通过js 生成出来呢.....

百度啊!!!Selenium+PhantomJS 跑一遍,就能得到动态页面加载完成后的html 代码了.啊!也就简单的几步,被自己搞了好久,不过还是要多踩坑才能学到东西嘛~~

废话说到这,直接贴代码了:

# coding = utf-8
#  author YongGuang Li  by 2018/05/24import urllib.request
import re
import requests
import json
from selenium import  webdriver#1.0版本还只是针对mv的链接下载,对于音频的下载其实也大同小异,改一下正则表达式就好了.#通过输入的url  获取动态生成后的页面html 代码
def getHtml(url):driver=webdriver.PhantomJS()driver.get(url)page = driver.page_source#print(page)return page#在html 代码里面通过正则匹配获取到视频的下载链接
def getVideo(html,path):reg = 'src="(.+?)"></video>'   #正则匹配 拿到vedio 标签内的下载链接vediore = re.compile(reg)vedios = re.findall(vediore, html)x=1for video in vedios:video=video.replace(';','&')  #获取的到的video 下载链接所有的'&'变成了';' 本人还不清楚原因,不过转换一下就好了print("正在下载:%s" %video)urllib.request.urlretrieve(video, path+'/%d.mp4'%x)print("已下载完成:%s"%video)x = x+1yield video#write 仅仅用来测试,作用就是将链接写到文件里
def write(html):with open("/home/cxiansheng/文档/a.txt",'w') as f:for h in html:f.write(h)if __name__ == '__main__':# 要是在pycharm 环境下输入链接的话加个空格再回车,不然他就默认是打开链接了url=input("请输入您需要下载的歌曲链接:")path=input("请输入您要保存视频的位置:")html = getHtml(url)print(getVideo(html,path))write(getVideo(html,path))

其实写完后,发现也就几十行代码,不过对于初学python写爬虫的自己来说呢,成功爬到自己要的东西的时候还是蛮开心的,嘿嘿,继续加油~~~.附上最后下载好的视频截图:

python爬虫--爬全民k歌里面的视频和音频相关推荐

  1. Python爬虫:爬取知乎上的视频,并把下载链接保存到md文件中

    Python爬虫:爬取知乎上的视频,并把下载链接保存到md文件中 1.需要的Python模块 主要是requests模块,用于得到的网页的数据 安装命令为:pip install requests 2 ...

  2. Python爬虫爬取各大热门短视频平台视频

    1.开发工具 Python3.9 requests库 其他一些Python内置库 pycharm 2.第三方库 安装第三方库 pip install requests 3.实现思路 1.利用tkint ...

  3. Python爬取全民k歌

    前言 总有一些人的声音,你永远忘不掉 正文 有听她唱的歌写作业的习惯,前几天在下了一个全民k歌PC版,发现不能连续播放,那给我气啊...于是去官网游了一遍没发现啥,但是发现了歌曲的分享链接 浏览器访问 ...

  4. 全民k歌爬虫 by--Python

    Linux(Ubuntu)上没有全民k歌, 网页上听的话又不支持自动换曲, 一首听完就只能手动刷新, 非常不方便方便,平常没时间去k歌房练习,没事听听自己唱的,慢慢改进哈,程序员太闷也不好-- 故而写 ...

  5. 唱吧音乐爬取 全民K歌爬取

    唱吧音乐爬取 #导入框架 import requests import re#确定url url = 'http://changba.com/u/461549830' #请求 def changba( ...

  6. 爬取全民K歌用户歌曲

    因为全民K歌下载用户的歌曲需要VIP,所以本次教你如何爬取全民K歌用户的歌曲下载打包到本地,只需要用户的K歌号并且没有浏览记录. 需要提前了解的知识:request请求,re正则表达式,fiddle抓 ...

  7. python3爬取全民K歌

    Python3爬取全民k歌 环境 python3.5 + requests 1.通过歌曲主页链接爬取 首先打开歌曲主页,打开开发者工具(F12). 选择Network,点击播放,会发现有一个请求返回的 ...

  8. 爬取全民K歌主页上的歌

    爬取全民K歌主页上的歌 import urllib.request import requests import os import repath = "C:\\Users\\HUAWEI\ ...

  9. linux k歌软件有哪些,“全民K歌”有什么秘密?网站数据分析之数据的获取

    最近看到身边好几个朋友都在用"全民K歌"这款软件在手机上K歌,使用频率还是很高,于是就想来看看全民K歌平台的用户究竟是一群什么样的用户?他们有什么样的特征.然后进行数据分析,强化自 ...

最新文章

  1. 大厂 CEO 一年薪酬拿多少?
  2. 算法----------同构字符串(Java版本)
  3. 模式识别,计算机视觉,计算机图形学,智能控制,信号处理,语音识别,知识处理,机器学习,数据挖掘领域区别
  4. 关于CS架构文件传输流的问题,文中代码都是转自网上,但可保证代码无无误...
  5. linux 进程管理 ppt,Linux内核结构与进程管理.ppt
  6. Java 18 正式发布,默认 UTF-8,finalize 被弃用,别再乱用了!
  7. 、简述global关键字的作用_在C#编程中global关键字的作用及其用法
  8. linux集群的启动和停止,linux平台 spark standalone集群 使用 start-all,stop-all 管理集群的启动和退出...
  9. 解封装(一):ffmpeg解封装
  10. [转载] python中的且语句_简单探讨python中的语句和语法
  11. Struts配置文件的加载顺序
  12. excel线性拟合的斜率_Excel 计算线性回归线斜率:SLOPE函数
  13. rom大小 stm32f205_最小的基于STM32F205VE的系统板
  14. 拼多多搜索API接口(关键词查询优惠券列表接口)
  15. uniapp浏览pdf文件
  16. 1538_AURIX_TriCore内核架构_地址映射以及存储配置
  17. 丧尸的世界·《丧尸西游》
  18. 基于MATLAB的数字滤波器设计
  19. 【打字母游戏_C语言实现】
  20. 22-07-14 西安 Git 分布式版本控制系统 、代码管理

热门文章

  1. 用Python做一个愚人节整蛊消息框
  2. Cadence添加工艺库 | 虚拟机与宿主机共享文件
  3. python爬虫开发教程-01-环境搭建
  4. signed和unsigned关键字修饰的整形在内存中的存储
  5. 用户画像系统设计调研
  6. 【代码error】RuntimeError: 1only batches of spatial targets supported (3D tensors) but got targets of si
  7. 点估计及矩估计的一些理解
  8. R语言在抽样技术中的运用
  9. 计算机屏幕无信号咋回事,电脑显示器无信号怎么回事及解决方法
  10. android 加载隐私协议策略