热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python下载快手视频教程_python如何下载快手视频

#-*-coding:utf-8-*-#author:Corleoneimporturllib2,urllibimportjson,os,re,socket,time,sysimp

# -*-coding:utf-8-*-

# author : Corleone

import urllib2,urllib

import json,os,re,socket,time,sys

import Queue

import threading

import logging

# 日志模块

logger = logging.getLogger("AppName")

formatter = logging.Formatter('%(asctime)s %(levelname)-5s: %(message)s')

console_handler = logging.StreamHandler(sys.stdout)

console_handler.formatter = formatter

logger.addHandler(console_handler)

logger.setLevel(logging.INFO)

video_q = Queue.Queue()    # 视频队列

def get_video():

url ="http://101.251.217.210/rest/n/feed/hot?app=0&lon=121.372027&c=BOYA_BAIDU_PINZHUAN&sys=ANDROID_4.1.2&mod=HUAWEI(HUAWEI%20C8813Q)&did=ANDROID_e0e0ef947bbbc243&ver=5.4&net=WIFI&country_code=cn&iuid=&appver=5.4.7.5559&max_memory=128&oc=BOYA_BAIDU_PINZHUAN&ftt=&ud=0&language=zh-cn&lat=31.319303 "

data = {

'type': 7,

'page': 2,

'coldStart':'false',

'count': 20,

'pv':'false',

'id': 5,

'refreshTimes': 4,

'pcursor': 1,

'os':'android',

'client_key':'3c2cd3f3',

'sig':'22769f2f5c0045381203fc57d1b5ad9b'

}

req = urllib2.Request(url)

req.add_header("User-Agent","kwai-android")

req.add_header("Content-Type","application/x-www-form-urlencoded")

params = urllib.urlencode(data)

try:

html = urllib2.urlopen(req, params).read()

except urllib2.URLError:

logger.warning(u"网络不稳定 正在重试访问")

html = urllib2.urlopen(req, params).read()

result = json.loads(html)

reg = re.compile(u"[\u4e00-\u9fa5]+")   # 只匹配中文

for x in result['feeds']:

try:

title = x['caption'].replace("\n","")

name =" ".join(reg.findall(title))

video_q.put([name, x['photo_id'], x['main_mv_urls'][0]['url']])

except KeyError:

pass

def download(video_q):

path = u"D:\快手"

while True:

data = video_q.get()

name = data[0].replace("\n","")

id = data[1]

url = data[2]

file = os.path.join(path, name +".mp4")

logger.info(u"正在下载:%s" %name)

try:

urllib.urlretrieve(url,file)

except IOError:

file = os.path.join(path, u"神经病呀"+'%s.mp4') %id

try:

urllib.urlretrieve(url, file)

except (socket.error,urllib.ContentTooShortError):

logger.warning(u"请求被断开,休眠2秒")

time.sleep(2)

urllib.urlretrieve(url, file)

logger.info(u"下载完成:%s" % name)

video_q.task_done()

def main():

# 使用帮助

try:

threads = int(sys.argv[1])

except (IndexError, ValueError):

print u"\n用法: " + sys.argv[0] + u" [线程数:10] \n"

print u"例如:" + sys.argv[0] +" 10" + u"  爬取视频 开启10个线程 每天爬取一次 一次2000个视频左右(空格隔开)"

return False

# 判断目录

if os.path.exists(u'D:\快手') == False:

os.makedirs(u'D:\快手')

# 解析网页

logger.info(u"正在爬取网页")

for x in range(1,100):

logger.info(u"第 %s 次请求" % x)

get_video()

num = video_q.qsize()

logger.info(u"共 %s 视频" %num)

# 多线程下载

for y in range(threads):

t = threading.Thread(target=download,args=(video_q,))

t.setDaemon(True)

t.start()

video_q.join()

logger.info(u"-----------全部已经爬取完成---------------")

main()



推荐阅读
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • Elasticsearch1Elasticsearch入门1.1Elasticsearch术语1.1.16.0以前的Elasticsearch术语1.1.26.0以后的Elasti ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有