python爬取头条付费专栏视频_用Python编写爬取头条视频的代码
最近一直在头条上面看关于Python的视频,可头条视频没有下载选项。通过浏览器自带的开发者工具(Google按F12)可以查看到视频的地址,并进行下载。这是手动下载,每回查看感觉还是比较费事
,就想用Python写个代码,实现下载功能。顺便编了个简单的GUI,输入视频网页的地址,选择保存目录,实现视频下载功能。
开发环境:Window7、Python3.6,用PyCharm编写。
主要有两个Python文件,VideoDownloadGUI.py 主要是编写GUI的,VideoDownload.py主要是实现视频爬取下载的,下面直接上代码。
VideoDownload.py代码:
[Python] 纯文本查看 复制代码from urllib import request
import re,random,binascii,json,base64,os
def VideoDownload(url,dir1):
headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate, sdch',
'Accept-Language': 'zh-CN,zh;q=0.8',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'Host': 'www.toutiao.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'
}
r = request.Request(url, headers=headers)
html = request.urlopen(r)
htmlstr = html.read().decode() #将html转换成unicode字符串格式
#获取视频标题
pattern1 = re.compile(r'
(.+?)\ ') #\后面为空格,匹配到空格之间的标题
video_title = re.findall(pattern1,htmlstr)[0]
#获取网页源码中的videoid
pattern2 = re.compile(r'videoid:\'(.+?)\'')
videoid = re.findall(pattern2,htmlstr)[0]
#crc32加密,获取访问json数据的链接
remoteURL = "http://ib.365yg.com/video/urls/v/1/toutiao/mp4/%s"%videoid
rand = str(random.random())[2:]
r = request.urlparse(remoteURL).path + '?r=' + rand
i = binascii.crc32(r.encode())
jsonURL = remoteURL + '?r=%s&s=%s'%(rand,i)
#获取视频地址
def getVideoURL(url):
h = request.urlopen(url)
hstr = h.read()
dictstr = json.loads(hstr)
video_list = dictstr['data']['video_list']
#main_url = dictstr['data']['video_list']['video_3']['main_url']
#video_list列表中可能没有第三种视频格式或可能有第四种视频格式
last = len(video_list)-1
main_url = video_list['video_%s'%last]['main_url']
return main_url
vUrl = getVideoURL(jsonURL)
videoURLreal = base64.b64decode(vUrl)
#下载视频文件
def downLoad(url):
path = dir1
file_name = video_title +'.mp4'
dest_dir = os.path.join(path,file_name)
request.urlretrieve(url.decode(),dest_dir)
downLoad(videoURLreal)
VideoDownloadGUI.py 代码:
[Python] 纯文本查看 复制代码from tkinter import *
from tkinter.filedialog import askdirectory
from tkinter.messagebox import *
import VideoDownload
root = Tk()
root.title("头条视频下载")
var1 = StringVar()
var2 = StringVar()
#调用VideoDownload.py实现视频下载
def download():
url = var1.get()
VideoDownload.VideoDownload(url,var2.get())
showinfo(message="下载完成")
#获取保存目录
def callback():
global path
path = askdirectory()
var2.set(path)
label1 = Label(root,text = "输入视频地址:").grid(row = 0 ,sticky = W )
entry1 = Entry(root,textvariable = var1).grid(row = 0 ,column = 1)
label2 = Label(root,text = "选择保存位置:").grid(row = 1 ,sticky = W )
entry2 = Entry(root,textvariable = var2).grid(row = 1 ,column =1)
button2 = Button(root,text = "...",command = callback).grid(row = 1 ,column = 2 ,sticky = W)
button3 = Button(root,text = "下载",command = download).grid(row = 2 ,column = 2 ,sticky = W)
root.mainloop()
GUI效果图:
GUI.PNG (22.73 KB, 下载次数: 3)
2017-6-21 22:26 上传
在视频地址栏里输入头条当前视频的网址,例如:http://www.toutiao.com/i6432258537992225282/;点击按钮
按钮.PNG (212 Bytes, 下载次数: 3)
2017-6-21 22:39 上传
,选择保存目录;最后点击下载,下载完成后会提示“下载完成”。
在编写的过程中,也遇到很多问题,毕竟这是我写的第二个爬虫
。一般查书,一般网上搜相关资料,最终算是将代码写出来了,里面也还有许多不足的地方,请各位大神指点!!!
在写完代码试验时,遇到过一种情况,下载多次视频后,会提示错误,查了一遍,发现request无法爬取到url的代码
,等第二天又可以爬取了。。。猜测可能跟网站的反爬虫之类的可能相关,可关键是,我一共也没爬几次
,不是那种几百上千次的访问啊,反正是会有限制,请教各位大神指点迷津,这个该怎么弄比较好
。
python爬取头条付费专栏视频_用Python编写爬取头条视频的代码相关推荐
- 今日头条付费专栏的暴利赚钱模式,半年净赚40万!
创业这条路不一定适合每一个人,但你不去了解操作,成功将会离你越来越远,此刻如果还在迷茫没有点子知识的你,不妨微信搜索:张一刻 获取最新的路子,实业,互联网,区块链,职业解答. 知识付费模式越来越成熟了 ...
- python 软件开发 哔哩哔哩_介绍Python爬取哔哩哔哩视频
栏目介绍如何爬取视频 相关免费学习推荐: 本篇文章主要给大家讲解下如实使用python 爬取哔哩哔哩中的视频,首先我是一名大数据开发工程师,爬虫只是我的一个业余爱好,喜欢爬虫的小伙伴可以一起交流.好了 ...
- 如何用python爬取视频_介绍Python爬取哔哩哔哩视频
python视频教程栏目介绍如何爬取视频 本篇文章主要给大家讲解下如实使用python 爬取哔哩哔哩中的视频,首先我是一名大数据开发工程师,爬虫只是我的一个业余爱好,喜欢爬虫的小伙伴可以一起交流.好了 ...
- 如何用python爬视频_使用Python爬取视频
说明:本实例可从视频网站爬取相关视频碎片,最后拼接成一个完整的视频,可以是vip视频. 步骤1:打开某个视频页面,如腾讯视频<一出好戏>(地址:https://v.qq.com/x/cov ...
- python爬取知乎话题广场_学习python爬虫---爬虫实践:爬取B站排行榜2(爬取全部分类排行榜、利用pygal库作图)...
前面我们爬取了B站上全站的排行榜,详细见:魏勇:学习python爬虫---爬虫实践:爬取B站排行榜zhuanlan.zhihu.com 一.爬取全部分类排行榜 我们观察一下B站排行榜,那里还有番剧排 ...
- python豆瓣电影top250爬虫课程设计_[教程]图文:爬虫爬取豆瓣电影top250
window环境下 使用python脚本爬取豆瓣 环境安装 python python开发环境 jupyter python web IDE requests python requests模块用于向 ...
- 如何使用python编程抢京东优惠券 知乎_学好Python爬取京东知乎价值数据
原标题:学好Python爬取京东知乎价值数据 Python爬虫为什么受欢迎 如果你仔细观察,就不难发现,懂爬虫.学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方面,像 Python这 ...
- python为啥爬取数据会有重复_利用Python来爬取“吃鸡”数据,为什么别人能吃鸡?...
原标题:利用Python来爬取"吃鸡"数据,为什么别人能吃鸡? 首先,神装镇楼 背景 最近老板爱上了吃鸡(手游:全军出击),经常拉着我们开黑,只能放弃午休的时间,陪老板在沙漠里奔波 ...
- python百度贴吧怎么爬取最早的帖子_【Python爬虫教学】百度篇·手把手教你抓取百度贴吧任意贴吧指定范围页数内的源代码...
开门见山. 懒癌一犯,能拖一天是一天. 好了,亲爱的小伙伴们,我又回来了!今天带来的是抓取输入的任意贴吧,抓取指定范围页数内的源代码. 工具: 依旧是 PyCharm 和 Google 浏览器,pyt ...
- 爬虫python下载视频_用python做爬虫下载视频
用python有一段时间了,对python是十二分喜爱,在我看来python是个好工具,可以轻松简洁的帮我完成一些我想要完成的工作.下面和大家分享一下我用python爬取某网站视频的案例.用pytho ...
最新文章
- java找图最短路径_查找有向图最短路径
- Hadoop集群安装-CDH5(5台服务器集群)
- stm32 bootloader跳转
- Vue中实现页面上点击按钮下载文件(exe)
- Maven编译时提示:不兼容的类型
- wxWidgets:wxSpinCtrl类用法
- k8s提交镜像到harbor仓库
- Java中List Set Map 是否有序等总结
- 使用原生js写ajax
- iOS原生CIFilter创建二维码
- mcq 队列_人工智能逻辑才能问答(MCQ)
- 《趣题学算法》—第1章1.2节简单的数学计算
- 编译原理教程_7 语法制导的语义计算
- 数据结构(C#)_排序算法(冒泡排序)
- 在Silverlight 2 beta1中使用IronPython等动态语言
- Unity 网络编程入门
- 当区块链是数字经济和数字社会的基石时,我们如何发现机遇?
- python_获取文件及文件夹大小修改时间
- 记录2015年年初跳槽的经历!
- java mail 端口号_使用Javamail连接到Gmail smtp服务器将忽略指定的端口并尝试使用25...