最近一直在头条上面看关于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编写爬取头条视频的代码相关推荐

  1. 今日头条付费专栏的暴利赚钱模式,半年净赚40万!

    创业这条路不一定适合每一个人,但你不去了解操作,成功将会离你越来越远,此刻如果还在迷茫没有点子知识的你,不妨微信搜索:张一刻 获取最新的路子,实业,互联网,区块链,职业解答. 知识付费模式越来越成熟了 ...

  2. python 软件开发 哔哩哔哩_介绍Python爬取哔哩哔哩视频

    栏目介绍如何爬取视频 相关免费学习推荐: 本篇文章主要给大家讲解下如实使用python 爬取哔哩哔哩中的视频,首先我是一名大数据开发工程师,爬虫只是我的一个业余爱好,喜欢爬虫的小伙伴可以一起交流.好了 ...

  3. 如何用python爬取视频_介绍Python爬取哔哩哔哩视频

    python视频教程栏目介绍如何爬取视频 本篇文章主要给大家讲解下如实使用python 爬取哔哩哔哩中的视频,首先我是一名大数据开发工程师,爬虫只是我的一个业余爱好,喜欢爬虫的小伙伴可以一起交流.好了 ...

  4. 如何用python爬视频_使用Python爬取视频

    说明:本实例可从视频网站爬取相关视频碎片,最后拼接成一个完整的视频,可以是vip视频. 步骤1:打开某个视频页面,如腾讯视频<一出好戏>(地址:https://v.qq.com/x/cov ...

  5. python爬取知乎话题广场_学习python爬虫---爬虫实践:爬取B站排行榜2(爬取全部分类排行榜、利用pygal库作图)...

    前面我们爬取了B站上全站的排行榜,详细见:魏勇:学习python爬虫---爬虫实践:爬取B站排行榜​zhuanlan.zhihu.com 一.爬取全部分类排行榜 我们观察一下B站排行榜,那里还有番剧排 ...

  6. python豆瓣电影top250爬虫课程设计_[教程]图文:爬虫爬取豆瓣电影top250

    window环境下 使用python脚本爬取豆瓣 环境安装 python python开发环境 jupyter python web IDE requests python requests模块用于向 ...

  7. 如何使用python编程抢京东优惠券 知乎_学好Python爬取京东知乎价值数据

    原标题:学好Python爬取京东知乎价值数据 Python爬虫为什么受欢迎 如果你仔细观察,就不难发现,懂爬虫.学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方面,像 Python这 ...

  8. python为啥爬取数据会有重复_利用Python来爬取“吃鸡”数据,为什么别人能吃鸡?...

    原标题:利用Python来爬取"吃鸡"数据,为什么别人能吃鸡? 首先,神装镇楼 背景 最近老板爱上了吃鸡(手游:全军出击),经常拉着我们开黑,只能放弃午休的时间,陪老板在沙漠里奔波 ...

  9. python百度贴吧怎么爬取最早的帖子_【Python爬虫教学】百度篇·手把手教你抓取百度贴吧任意贴吧指定范围页数内的源代码...

    开门见山. 懒癌一犯,能拖一天是一天. 好了,亲爱的小伙伴们,我又回来了!今天带来的是抓取输入的任意贴吧,抓取指定范围页数内的源代码. 工具: 依旧是 PyCharm 和 Google 浏览器,pyt ...

  10. 爬虫python下载视频_用python做爬虫下载视频

    用python有一段时间了,对python是十二分喜爱,在我看来python是个好工具,可以轻松简洁的帮我完成一些我想要完成的工作.下面和大家分享一下我用python爬取某网站视频的案例.用pytho ...

最新文章

  1. java找图最短路径_查找有向图最短路径
  2. Hadoop集群安装-CDH5(5台服务器集群)
  3. stm32 bootloader跳转
  4. Vue中实现页面上点击按钮下载文件(exe)
  5. Maven编译时提示:不兼容的类型
  6. wxWidgets:wxSpinCtrl类用法
  7. k8s提交镜像到harbor仓库
  8. Java中List Set Map 是否有序等总结
  9. 使用原生js写ajax
  10. iOS原生CIFilter创建二维码
  11. mcq 队列_人工智能逻辑才能问答(MCQ)
  12. 《趣题学算法》—第1章1.2节简单的数学计算
  13. 编译原理教程_7 语法制导的语义计算
  14. 数据结构(C#)_排序算法(冒泡排序)
  15. 在Silverlight 2 beta1中使用IronPython等动态语言
  16. Unity 网络编程入门
  17. 当区块链是数字经济和数字社会的基石时,我们如何发现机遇?
  18. python_获取文件及文件夹大小修改时间
  19. 记录2015年年初跳槽的经历!
  20. java mail 端口号_使用Javamail连接到Gmail smtp服务器将忽略指定的端口并尝试使用25...

热门文章

  1. Python 用均匀分布验证中心极限定理
  2. JavaScript面试题
  3. 招聘网站分析-前程无忧网站的爬虫设计与实现
  4. (十四)商品详情页实现
  5. png的计算机储存图片的格式吗,win7系统下png图片转换成jpg格式的三种方法
  6. Pandas中,使用reindex方法报错:index must be monotonic increasing or decreasing的分析
  7. IE浏览器卸载命令行
  8. DNS域名解析中A、AAAA、CNAME、MX、NS、TXT、SRV、SOA、PTR各项记录的作用
  9. moto edge s root与开启nfc门禁卡模拟
  10. 掌上医院:手机生活助手