拾2线程下载,python爬取快手录制

直接开头! 

python爬取快手摄像 八线程下载,python快手

直接开首! 

 

环境: python 2.7 + win10

工具:fiddler postman 安卓模拟器

 

率先,展开fiddler,fiddler作为http/https 抓包神器,那里就不多介绍。

布局允许https 

 

澳门葡京备用网址 1

 

配备允许远程连接 也正是展开http代理

 

澳门葡京备用网址 2

 

 

电脑ip: 192.168.1.110

下一场
确认保证手提式有线电话机和Computer是在二个局域网下,可以通讯。由于本人那边未有安卓手提式有线话机,就用了安卓模拟器替代,效果一样的。

展开手提式有线话机浏览器,输入1玖贰.16八.一.1十:888捌  
也正是设置的代理地址,安装证书之后才具抓包

 

澳门葡京备用网址 3

设置证书之后,在WiFi设置 修改网络 手动钦赐http代理

澳门葡京备用网址 4

 

 

 保存后就足以了,fiddler就足以抓到app的数量了,张开快手 刷新,可以看到有数不完http请求进入,一般接口地址之类的很显眼的,能够看到
是json类型的

拾2线程下载,python爬取快手录制。 

澳门葡京备用网址 5

 

 http post请求,再次来到数据是json
,展开后发觉一同是20条摄像音讯,先保障是还是不是无误,找一个摄像链接看下。

澳门葡京备用网址 6

 

 ok 是能够播放的 很通透到底也并未有水印。

 那就开荒postman 来测试,form-data 格局提交则报错

澳门葡京备用网址 7

 

那换raw 这种

澳门葡京备用网址 8

 

 

报错音讯不均等了,试试加上headers

 

澳门葡京备用网址 9

 

 

 nice
  成功再次来到数据,作者又多试两次,开采每一次回到结果差别样,都以十多少个摄像,刚才里面post参数中
有个page=1 如此直白都以首先页 就好像向来在二哥大上不往下翻了
就起来一贯刷新那样,反正 也不在乎,只要回到数据 不另行就好。

上面就开头上代码

 

  1 # -*-coding:utf-8-*-
  2 # author : Corleone
  3 import urllib2,urllib
  4 import json,os,re,socket,time,sys
  5 import Queue
  6 import threading
  7 import logging
  8 
  9 
 10 # 日志模块
 11 logger = logging.getLogger("AppName")
 12 formatter = logging.Formatter('%(asctime)s %(levelname)-5s: %(message)s')
 13 console_handler = logging.StreamHandler(sys.stdout)
 14 console_handler.formatter = formatter
 15 logger.addHandler(console_handler)
 16 logger.setLevel(logging.INFO)
 17 
 18 
 19 video_q = Queue.Queue()    # 视频队列
 20 
 21 
 22 def get_video():
 23     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 "
 24     data = {
 25         'type': 7,
 26         'page': 2,
 27         'coldStart': 'false',
 28         'count': 20,
 29         'pv': 'false',
 30         'id': 5,
 31         'refreshTimes': 4,
 32         'pcursor': 1,
 33         'os': 'android',
 34         'client_key': '3c2cd3f3',
 35         'sig': '22769f2f5c0045381203fc57d1b5ad9b'
 36     }
 37     req = urllib2.Request(url)
 38     req.add_header("User-Agent", "kwai-android")
 39     req.add_header("Content-Type", "application/x-www-form-urlencoded")
 40     params = urllib.urlencode(data)
 41     try:
 42         html = urllib2.urlopen(req, params).read()
 43     except urllib2.URLError:
 44         logger.warning(u"网络不稳定 正在重试访问")
 45         html = urllib2.urlopen(req, params).read()
 46     result = json.loads(html)
 47     reg = re.compile(u"[\u4e00-\u9fa5]+")   # 只匹配中文
 48     for x in result['feeds']:
 49         try:
 50             title = x['caption'].replace("\n","")
 51             name = " ".join(reg.findall(title))
 52             video_q.put([name, x['photo_id'], x['main_mv_urls'][0]['url']])
 53         except KeyError:
 54             pass
 55 
 56 def download(video_q):
 57     path = u"D:\快手"
 58     while True:
 59         data = video_q.get()
 60         name = data[0].replace("\n","")
 61         id = data[1]
 62         url = data[2]
 63         file = os.path.join(path, name + ".mp4")
 64         logger.info(u"正在下载:%s" %name)
 65         try:
 66             urllib.urlretrieve(url,file)
 67         except IOError:
 68             file = os.path.join(path, u"神经病呀"+ '%s.mp4') %id
 69             try:
 70                 urllib.urlretrieve(url, file)
 71             except (socket.error,urllib.ContentTooShortError):
 72                 logger.warning(u"请求被断开,休眠2秒")
 73                 time.sleep(2)
 74                 urllib.urlretrieve(url, file)
 75 
 76         logger.info(u"下载完成:%s" % name)
 77         video_q.task_done()
 78 
 79 
 80 def main():
 81     # 使用帮助
 82     try:
 83         threads = int(sys.argv[1])
 84     except (IndexError, ValueError):
 85         print u"\n用法: " + sys.argv[0] + u" [线程数:10] \n"
 86         print u"例如:" + sys.argv[0] + " 10" + u"  爬取视频 开启10个线程 每天爬取一次 一次2000个视频左右(空格隔开)"
 87         return False
 88     # 判断目录
 89     if os.path.exists(u'D:\快手') == False:
 90         os.makedirs(u'D:\快手')
 91     # 解析网页
 92     logger.info(u"正在爬取网页")
 93     for x in range(1,100):
 94         logger.info(u"第 %s 次请求" % x)
 95         get_video()
 96     num = video_q.qsize()
 97     logger.info(u"共 %s 视频" %num)
 98     # 多线程下载
 99     for y in range(threads):
100         t = threading.Thread(target=download,args=(video_q,))
101         t.setDaemon(True)
102         t.start()
103 
104     video_q.join()
105     logger.info(u"-----------全部已经爬取完成---------------")
106 
107 
108 main()

 

上面测试

澳门葡京备用网址 10

 

十二线程下载 每回下载2000 个录制左右  暗中同意下载到D:\快手

 

澳门葡京备用网址 11

 

 总括:其实作者本次爬的老司机有点投机取巧了,因为post过去的参数 sign 是具名的确是有加密的,只所以仍是能够回来数据 那是因为作者老是都以请求的等同的链接
page=1 都以率先页的
当小编改成二的时候,就验签退步了。可是,它正好那样也能回来分歧的数目,尽管抵达了效益,但却尚未能破解他的加密算法。。。前两天爬抖音的时候 也是这么。加密的。。。哎
。技巧有限。。逆向不了他的app。。。等未来 有才干解决了 在来享受呢。。

说起底放上作者的github地址 :
 也是刚注册的,以前都没交给过代码,也有多少个其余的小爬虫,早先时期找到风趣的
风趣的都会提交上去 。 招待学习交换 玩耍 : )  嘿嘿嘿~

 

多线程下载,python快手
直接开始! 情状: python 二.7 + win拾 工具:fiddler postman 安卓模拟器
首先,张开fiddler,fiddler作为…

python爬虫爬取快手录制二10八线程下载作用,python快手

环境: python 2.7 + win10

工具:fiddler postman 安卓模拟器

先是,展开fiddler,fiddler作为http/https 抓包神器,那里就不多介绍。

配置允许https

澳门葡京备用网址 12 

布署允许远程连接 也等于开采http代理

澳门葡京备用网址 13 

澳门葡京备用网址 ,电脑ip: 192.168.1.110

下一场
确定保证手提式有线话机和Computer是在二个局域网下,可以通讯。由于自个儿那边未有安卓手机,就用了安卓模拟器代替,效果一样的。

张开手提式有线电话机浏览器,输入1九贰.168.壹.110:888捌  
也正是安装的代理地址,安装证书之后技艺抓包

澳门葡京备用网址 14 

安装证书之后,在 WiFi设置 修改网络 手动钦点http代理

澳门葡京备用网址 15 

保存后就足以了,fiddler就足以抓到app的数目了,展开快手 刷新,可以看到有为数不少http请求进入,一般接口地址之类的很鲜明的,能够看看
是json类型的

澳门葡京备用网址 16 

http post请求,重返数据是json
,张开后开掘一齐是20条录制音信,先保障是还是不是精确,找2个摄像链接看下。

澳门葡京备用网址 17 

ok 是能够播放的 很绝望也未有水印。

那么未来开垦 postman 来模拟那几个post 看看有未有检查参数

澳门葡京备用网址 18 

壹共是如此多参数,作者觉着 client_key 和 sign 会验证…可是 后边发掘作者错了 啥也没验证 就好像此提交过去就行…

form-data 形式交给则报错

澳门葡京备用网址 19 

那换 raw 这种

澳门葡京备用网址 20 

报错音讯不平等了,试试加上 headers

澳门葡京备用网址 21 

nice 成功再次来到数据,我又多试四遍,发掘每一次回去结果分歧等,都是二十个录制,刚才中间post参数中 有个page=1 或许平昔都以率先页
就如从来在手提式有线电话机上不往下翻了 就从头一贯刷新这样,反正
也无所谓,只要回到数据 不另行就好。

上边就从头上代码

# -*-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()

下边测试

澳门葡京备用网址 22 

二十八线程下载 每回下载 2000 个摄像左右  默许下载到D:\快手

澳门葡京备用网址 23 

好了 这一次就到那截至了,其实也很简短,快手竟然从未加密。。。因为 爬
抖音的时候 就遇到难点了…..

总结

上述所述是作者给大家介绍的python爬虫爬取快手录像拾二线程下载,希望对大家有所接济,借使大家有此外疑问请给自家留言,小编会及时回复大家的。在此也格外感激大家对帮客之家网址的扶助!

意况: python 二.7 + win十 工具:fiddler postman 安卓模拟器
首先,展开fiddler,fiddler作为http/…

正文给大家介绍了python爬虫爬取快手录像二10十二线程下载功用,有意思味的同校能够参照一下。

 

环境: python 2.7 + win10

环境: python 2.7 + win10

工具:fiddler postman 安卓模拟器

工具:fiddler postman 安卓模拟器

率先,打开fiddler,fiddler作为http/https 抓包神器,那里就不多介绍。

 

布局允许https

首先,打开fiddler,fiddler作为http/https 抓包神器,那里就不多介绍。

澳门葡京备用网址 24 

安插允许https 

配备允许远程连接 相当于展开http代理

 

澳门葡京备用网址 25 

澳门葡京备用网址 26

电脑ip: 192.168.1.110

 

然后
确定保障手提式有线电话机和Computer是在1个局域网下,能够通信。由于自身那边未有安卓手提式无线话机,就用了安卓模拟器替代,效果等同的。

配置允许远程连接 也正是开荒http代理

开荒手提式有线电话机浏览器,输入1玖2.16八.一.110:888八  
也正是安装的代理地址,安装证书之后手艺抓包

 

澳门葡京备用网址 27 

澳门葡京备用网址 28

设置证书之后,在 WiFi设置 修改互联网 手动内定http代理

 

澳门葡京备用网址 29 

 

保存后就足以了,fiddler就足以抓到app的多少了,展开快手 刷新,可以看到有好些个http请求进入,一般接口地址之类的很显著的,可以观望是json类型的

电脑ip: 192.168.1.110

澳门葡京备用网址 30 

下一场
确认保障手提式有线电电话机和Computer是在八个局域网下,能够通讯。由于笔者那边未有安卓手提式有线话机,就用了安卓模拟器代替,效果一样的。

http post请求,重临数据是json
,张开后发觉一齐是20条摄像新闻,先确定保障是还是不是科学,找贰个视频链接看下。

张开手提式有线电话机浏览器,输入1九二.16八.1.110:888八  
也便是设置的代理地址,安装证书之后才具抓包

澳门葡京备用网址 31 

 

ok 是能够播放的 很干净也不曾水印。

澳门葡京备用网址 32

那么未来开垦 postman 来模拟这么些post 看看有未有检查参数

安装证书之后,在WiFi设置 修改网络手动内定http代理

澳门葡京备用网址 33 

澳门葡京备用网址 34

1共是如此多参数,作者觉着 client_key 和 sign 会验证…然而 后面开掘自家错了 啥也没验证 就像此提交过去就行…

 

form-data 形式提交则报错

 

澳门葡京备用网址 35 

 保存后就能够了,fiddler就能够抓到app的数码了,展开快手 刷新,可以看到有广大http请求进入,一般接口地址之类的很明显的,能够看看
是json类型的

那换 raw 这种

 

澳门葡京备用网址 36 

澳门葡京备用网址 37

报错音讯分化等了,试试加上 headers

 

澳门葡京备用网址 38 

 http post请求,重返数据是json
,张开后发觉一同是20条视频音讯,先确定保证是或不是科学,找三个录制链接看下。

nice 成功重临数据,作者又多试几回,开采每回回来结果不1致,都是十柒个录像,刚才里面post参数中 有个page=一 或者向来都以首先页
如同一贯在手提式有线电话机上不往下翻了 就起来一直刷新那样,反正
也无所谓,只要回到数据 不另行就好。

澳门葡京备用网址 39

下面就开端上代码

 

# -*-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()

 ok 是足以播放的 很通透到底也从没水印。

上边测试

 那就展开postman 来测试,form-data 情势提交则报错

澳门葡京备用网址 40 

澳门葡京备用网址 41

八线程下载 每一趟下载 3000 个摄像左右  默许下载到D:快手

 

澳门葡京备用网址 42 

那换raw 这种

好了 本次就到那停止了,其实也非常的粗略,快手竟然未有加密。。。因为 爬
抖音的时候 就遭受难题了…..

澳门葡京备用网址 43

 

 

报错消息不平等了,试试加上headers

 

澳门葡京备用网址 44

 

 

 nice   成功再次来到数据,小编又多试四回,开采每便回去结果不平等,都是贰拾个录像,刚才里边post参数中
有个page=一 这样直接都是率先页 就如一贯在手提式有线电话机上不往下翻了
就从头一向刷新这样,反正 也不在乎,只要回到数据 不重复就好。

上面就起先上代码

 

  1 # -*-coding:utf-8-*-
  2 # author : Corleone
  3 import urllib2,urllib
  4 import json,os,re,socket,time,sys
  5 import Queue
  6 import threading
  7 import logging
  8 
  9 
 10 # 日志模块
 11 logger = logging.getLogger("AppName")
 12 formatter = logging.Formatter('%(asctime)s %(levelname)-5s: %(message)s')
 13 console_handler = logging.StreamHandler(sys.stdout)
 14 console_handler.formatter = formatter
 15 logger.addHandler(console_handler)
 16 logger.setLevel(logging.INFO)
 17 
 18 
 19 video_q = Queue.Queue()    # 视频队列
 20 
 21 
 22 def get_video():
 23     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 "
 24     data = {
 25         'type': 7,
 26         'page': 2,
 27         'coldStart': 'false',
 28         'count': 20,
 29         'pv': 'false',
 30         'id': 5,
 31         'refreshTimes': 4,
 32         'pcursor': 1,
 33         'os': 'android',
 34         'client_key': '3c2cd3f3',
 35         'sig': '22769f2f5c0045381203fc57d1b5ad9b'
 36     }
 37     req = urllib2.Request(url)
 38     req.add_header("User-Agent", "kwai-android")
 39     req.add_header("Content-Type", "application/x-www-form-urlencoded")
 40     params = urllib.urlencode(data)
 41     try:
 42         html = urllib2.urlopen(req, params).read()
 43     except urllib2.URLError:
 44         logger.warning(u"网络不稳定 正在重试访问")
 45         html = urllib2.urlopen(req, params).read()
 46     result = json.loads(html)
 47     reg = re.compile(u"[\u4e00-\u9fa5]+")   # 只匹配中文
 48     for x in result['feeds']:
 49         try:
 50             title = x['caption'].replace("\n","")
 51             name = " ".join(reg.findall(title))
 52             video_q.put([name, x['photo_id'], x['main_mv_urls'][0]['url']])
 53         except KeyError:
 54             pass
 55 
 56 def download(video_q):
 57     path = u"D:\快手"
 58     while True:
 59         data = video_q.get()
 60         name = data[0].replace("\n","")
 61         id = data[1]
 62         url = data[2]
 63         file = os.path.join(path, name + ".mp4")
 64         logger.info(u"正在下载:%s" %name)
 65         try:
 66             urllib.urlretrieve(url,file)
 67         except IOError:
 68             file = os.path.join(path, u"神经病呀"+ '%s.mp4') %id
 69             try:
 70                 urllib.urlretrieve(url, file)
 71             except (socket.error,urllib.ContentTooShortError):
 72                 logger.warning(u"请求被断开,休眠2秒")
 73                 time.sleep(2)
 74                 urllib.urlretrieve(url, file)
 75 
 76         logger.info(u"下载完成:%s" % name)
 77         video_q.task_done()
 78 
 79 
 80 def main():
 81     # 使用帮助
 82     try:
 83         threads = int(sys.argv[1])
 84     except (IndexError, ValueError):
 85         print u"\n用法: " + sys.argv[0] + u" [线程数:10] \n"
 86         print u"例如:" + sys.argv[0] + " 10" + u"  爬取视频 开启10个线程 每天爬取一次 一次2000个视频左右(空格隔开)"
 87         return False
 88     # 判断目录
 89     if os.path.exists(u'D:\快手') == False:
 90         os.makedirs(u'D:\快手')
 91     # 解析网页
 92     logger.info(u"正在爬取网页")
 93     for x in range(1,100):
 94         logger.info(u"第 %s 次请求" % x)
 95         get_video()
 96     num = video_q.qsize()
 97     logger.info(u"共 %s 视频" %num)
 98     # 多线程下载
 99     for y in range(threads):
100         t = threading.Thread(target=download,args=(video_q,))
101         t.setDaemon(True)
102         t.start()
103 
104     video_q.join()
105     logger.info(u"-----------全部已经爬取完成---------------")
106 
107 
108 main()

 

上面测试

澳门葡京备用网址 45

 

十二线程下载 每回下载三千 个录像左右
 默许下载到D:\快手

 

澳门葡京备用网址 46

 

 总括:其实笔者此番爬的老司机有点投机取巧了,因为post过去的参数 sign 是签名的确是有加密的,只所以仍是能够回来数据 这是因为笔者每回都以请求的等同的链接
page=壹 都以率先页的
当笔者改成二的时候,就验签失利了。然则,它恰恰那样也能回来分裂的数量,即便抵达了职能,但却从不能破解他的加密算法。。。前两天爬抖音的时候 也是这么。加密的。。。哎
。本事有限。。逆向不了他的app。。。等未来 有技能化解了 在来享受呢。。

终极放上小编的github地址 :
 也是刚注册的,以前都没交给过代码,也有几个别的的小爬虫,前期找到有趣的
有意思的都会付出上去 。 迎接学习沟通 玩耍 : )  嘿嘿嘿~

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website