you-get 关于bilibili部分的函数
来源:互联网 发布:软件开发好学不 编辑:程序博客网 时间:2024/05/16 06:21
作为一个爬虫爱好者,看到好东西就是想爬爬。
you-get 代码阅读
我吧原本的分工明确的代码给小作坊化了 ~
def make_xml_url(self,response):# response是目标网页的text内容# 假设目标网页是:https://www.bilibili.com/video/av16806353/?spm_id_from=333.334.chief_recommend.16,那么response就是这个网页的内容 cid = re.findall(r'cid=(\d+)', response.text)[0] aid = re.findall(r'aid=(\d+)', response.text)[0] ts = int(time.time()) # quality是画质的意思?为了简化函数,默认是mp4,mp4的代表值是1 # 其他的是 fmt2qlt = dict(hdflv=4, flv=3, hdmp4=2, mp4=1) params_str = 'cid={}&player=1&quality={}&ts={}'.format(cid, 1, ts) sign = hashlib.md5(params_str + self.SEC1).hexdigest() # SEC1 = '1c15888dc316e05a15fdd0a02ed6584f' # 这个SEC1是必要的参数,怎么来的我还在测试 params = 'cid={}&player=1&quality={}&ts={}&sign={}'.format(cid, 1, ts, sign) # 以上就是获取目标网页必备的参数 xml_url = self.api_url + params # api_url = 'http://interface.bilibili.com/playurl?'主站网址 # 构造出来的api_url 有什么用?里面是什么? # 是视频的真实地址
接下来的是对xml_url的内容解析
xml_url 的部分内容结构大概是如下所示,这些是关于视频的部分
<durl><order>1</order><length>231650</length><size>15926913</size><url>http://cn-zjhz-cu-v-06.acgvideo.com/vg4/upgcxcode/76/83/27458376/27458376-1-16.mp4?expires=1512754200&platform=pc&ssig=UnsLqWatzFaoUab1PqScAw&oi=2634041579&nfa=7K4yyw4Vppryd70IpYUAjw==&dynamic=1&hfa=2014942185&hfb=Yjk5ZmZjM2M1YzY4ZjAwYTMzMTIzYmIyNWY4ODJkNWI=</url><backup_url><url>http://cn-sdyt-cu-v-09.acgvideo.com/vg3/upgcxcode/76/83/27458376/27458376-1-16.mp4?expires=1512754200&platform=pc&ssig=Vmqqx_BVx52d_ORtoPGgNg&oi=2634041579&nfa=7K4yyw4Vppryd70IpYUAjw==&dynamic=1&hfa=2014942185&hfb=Yjk5ZmZjM2M1YzY4ZjAwYTMzMTIzYmIyNWY4ODJkNWI=</url><url>http://cn-sxxa-cu-v-02.acgvideo.com/vg3/upgcxcode/76/83/27458376/27458376-1-16.mp4?expires=1512754200&platform=pc&ssig=Vmqqx_BVx52d_ORtoPGgNg&oi=2634041579&nfa=7K4yyw4Vppryd70IpYUAjw==&dynamic=1&hfa=2014942185&hfb=Yjk5ZmZjM2M1YzY4ZjAwYTMzMTIzYmIyNWY4ODJkNWI=</url></backup_url></durl>
parse 函数对这个内容进行解析
def parse(self,xml_response): bs = BeautifulSoup(xml_response.text,features='xml') # xml_response.text 是xml格式,然后从bs中提取视频地址 try: cid = re.findall(r'av(\d+)',xml_response) size = bs.find('durl').find('length') url = bs.find('durl').find('url').text self.download(url,cid) except Exception as error: print ('get real urls wrong!') print ('>>> ',error) # cid是标识,size是视频大小,url是视频真实地址,有的视频存在多个url,原因是:画质和数量。
def download(self,url,cid): content = get_content(url) cid = '/you/save/path/cid.mp4' with open(cid,'w') as file: file.write(content) print ('save done') # 简单下载# get_content 就是普通的获取url内容的函数def get_content(url): headers = {'...'} try: response = requests.get(url,headers=headers) excepet Exception as error: print (error) return response
其他的类似下载的函数都相似,如果想查看更多的内容请点击:
https://you-get.org/
阅读全文
0 0
- you-get 关于bilibili部分的函数
- 关于get的几个函数
- you-get 的安装
- you-get遇到的坑
- 关于时间函数的部分说明
- php关于文件操作的部分函数
- TypeScript关于函数解构的部分
- 关于cin.get()函数
- You Get 需要用到的记录
- you-get的使用及安装说明
- 仿一个BiliBili的app
- 关于Excel的宏表函数 GET.CELL
- 关于cin的get()和getline()成员函数
- 关于自己调试中的函数返回值的部分讨论
- Hibernate的get函数
- Out to Get You
- You-Get视频下载工具
- 视频下载工具 :you-get
- 内部类、匿名类、Lambda表达式
- 【bzoj 1982】Moving Pebbles(博弈论)
- PHP代码中使用post参数上传大文件
- 批量把lib中的符号导出到文本中
- 123
- you-get 关于bilibili部分的函数
- Java学习这一部分
- nginx高质量的博客
- JAVA猜数字小游戏
- CentOS7.4 远程桌面 tigervnc 设置
- python连接oracle-从编码到版本不兼容等问题
- Lua语言之table表
- 集成Google第三方登录时出现的异常
- mmmmmmm