日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python能爬视频吗_Python爬取视频(其实是一篇福利)

發布時間:2025/3/19 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python能爬视频吗_Python爬取视频(其实是一篇福利) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先找一個視頻地址試驗一下:

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

import requests

def download_file(url, path):

with requests.get(url, stream=True) as r:

chunk_size = 1024

content_size = int(r.headers['content-length'])

print '下載開始'

with open(path, "wb") as f:

for chunk in r.iter_content(chunk_size=chunk_size):

f.write(chunk)

if __name__ == '__main__':

url = '就在原帖...'

path = '想存哪都行'

download_file(url, path)

遭遇當頭一棒:

AttributeError: __exit__

這文檔也會騙人的么!

看樣子是沒有實現上下文需要的__exit__方法。既然只是為了保證要讓r最后close以釋放連接池,那就使用contextlib的closing特性好了:

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

import requests

from contextlib import closing

def download_file(url, path):

with closing(requests.get(url, stream=True)) as r:

chunk_size = 1024

content_size = int(r.headers['content-length'])

print '下載開始'

with open(path, "wb") as f:

for chunk in r.iter_content(chunk_size=chunk_size):

f.write(chunk)

程序正常運行了,不過我盯著這文件,怎么大小不見變啊,到底是完成了多少了呢?還是要讓下好的內容及時存進硬盤,還能省點內存是不是:

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

import requests

from contextlib import closing

import os

def download_file(url, path):

with closing(requests.get(url, stream=True)) as r:

chunk_size = 1024

content_size = int(r.headers['content-length'])

print '下載開始'

with open(path, "wb") as f:

for chunk in r.iter_content(chunk_size=chunk_size):

f.write(chunk)

f.flush()

os.fsync(f.fileno())

文件以肉眼可見的速度在增大,真心疼我的硬盤,還是最后一次寫入硬盤吧,程序中記個數就好了:

def download_file(url, path):

with closing(requests.get(url, stream=True)) as r:

chunk_size = 1024

content_size = int(r.headers['content-length'])

print '下載開始'

with open(path, "wb") as f:

n = 1

for chunk in r.iter_content(chunk_size=chunk_size):

loaded = n*1024.0/content_size

f.write(chunk)

print '已下載{0:%}'.format(loaded)

n += 1

結果就很直觀了:

已下載2.579129%

已下載2.581255%

已下載2.583382%

已下載2.585508%

心懷遠大理想的我怎么會只滿足于這一個呢,寫個類一起使用吧:

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

import requests

from contextlib import closing

import time

def download_file(url, path):

with closing(requests.get(url, stream=True)) as r:

chunk_size = 1024*10

content_size = int(r.headers['content-length'])

print '下載開始'

with open(path, "wb") as f:

p = ProgressData(size = content_size, unit='Kb', block=chunk_size)

for chunk in r.iter_content(chunk_size=chunk_size):

f.write(chunk)

p.output()

class ProgressData(object):

def __init__(self, block,size, unit, file_name='', ):

self.file_name = file_name

self.block = block/1000.0

self.size = size/1000.0

self.unit = unit

self.count = 0

self.start = time.time()

def output(self):

self.end = time.time()

self.count += 1

speed = self.block/(self.end-self.start) if (self.end-self.start)>0 else 0

self.start = time.time()

loaded = self.count*self.block

progress = round(loaded/self.size, 4)

if loaded >= self.size:

print u'%s下載完成\r\n'%self.file_name

else:

print u'{0}下載進度{1:.2f}{2}/{3:.2f}{4} 下載速度{5:.2%} {6:.2f}{7}/s'.\

format(self.file_name, loaded, self.unit,\

self.size, self.unit, progress, speed, self.unit)

print '%50s'%('/'*int((1-progress)*50))

運行:

下載開始

下載進度10.24Kb/120174.05Kb 0.01% 下載速度4.75Kb/s

/

下載進度20.48Kb/120174.05Kb 0.02% 下載速度32.93Kb/s

/

看上去舒服多了。

下面要做的就是多線程同時下載了,主線程生產url放入隊列,下載線程獲取url:

import requests

from contextlib import closing

import time

import Queue

import hashlib

import threading

import os

def download_file(url, path):

with closing(requests.get(url, stream=True)) as r:

chunk_size = 1024*10

content_size = int(r.headers['content-length'])

if os.path.exists(path) and os.path.getsize(path)>=content_size:

print '已下載'

return

print '下載開始'

with open(path, "wb") as f:

p = ProgressData(size = content_size, unit='Kb', block=chunk_size, file_name=path)

for chunk in r.iter_content(chunk_size=chunk_size):

f.write(chunk)

p.output()

class ProgressData(object):

def __init__(self, block,size, unit, file_name='', ):

self.file_name = file_name

self.block = block/1000.0

self.size = size/1000.0

self.unit = unit

self.count = 0

self.start = time.time()

def output(self):

self.end = time.time()

self.count += 1

speed = self.block/(self.end-self.start) if (self.end-self.start)>0 else 0

self.start = time.time()

loaded = self.count*self.block

progress = round(loaded/self.size, 4)

if loaded >= self.size:

print u'%s下載完成\r\n'%self.file_name

else:

print u'{0}下載進度{1:.2f}{2}/{3:.2f}{4} {5:.2%} 下載速度{6:.2f}{7}/s'.\

format(self.file_name, loaded, self.unit,\

self.size, self.unit, progress, speed, self.unit)

print '%50s'%('/'*int((1-progress)*50))

queue = Queue.Queue()

def run():

while True:

url = queue.get(timeout=100)

if url is None:

print u'全下完啦'

break

h = hashlib.md5()

h.update(url)

name = h.hexdigest()

path = 'e:/download/' + name + '.mp4'

download_file(url, path)

def get_url():

queue.put(None)

if __name__ == '__main__':

get_url()

for i in xrange(4):

t = threading.Thread(target=run)

t.daemon = True

t.start()

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的python能爬视频吗_Python爬取视频(其实是一篇福利)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 午夜影院免费体验区 | 一级片少妇| 97碰碰碰 | 啊灬啊灬啊灬秀婷 | 国产精品99久久久久久一二区 | 自拍偷在线精品自拍偷无码专区 | 99久久精品免费看国产免费软件 | 免费成人av网址 | 萌白酱喷水视频 | 成人黄性视频 | 一级黄色小视频 | 三级精品在线 | 国产51页| 美国做爰xxxⅹ性视频 | 欧美大片在线 | 亚洲妇熟xx妇色黄蜜桃 | 99热com| 9l蝌蚪porny中文自拍 | 国产对白羞辱绿帽vk | 欧美黄色片网站 | 羞羞影院体验区 | 欧美高清大白屁股ass18 | 美女黄色在线观看 | 欧美aⅴ在线观看 | 欧美裸体xxxx| 亚洲av永久纯肉无码精品动漫 | 日韩av中文字幕在线 | 91福利在线免费观看 | 国产男女网站 | 国产大奶在线观看 | 欧美激情一二三区 | 久久久蜜桃一区二区 | 1000部拍拍拍18勿入免费视频 | 91成人免费在线观看 | www.久热 | 天堂av8在线 | 国产伦精品一区二区三区视频免费 | 超碰中文在线 | 国产精品久久久久久久久毛片 | 偷拍欧美亚洲 | 欧美丰满少妇人妻精品 | 国产精品丝袜黑色高跟鞋的设计特点 | 色翁荡息又大又硬又粗又爽 | 337p粉嫩大胆噜噜噜亚瑟影院 | 用力挺进新婚白嫩少妇 | 精品亚洲国产成av人片传媒 | 国产精品羞羞答答 | 亚洲性图第一页 | 91久久久久久久 | av2018| 国产性生活片 | 午夜一区不卡 | 在线国产一区 | 亚洲美女免费视频 | 亚洲专区在线 | 国产亚洲欧美在线精品 | 欧美视频一区在线观看 | 青青在线 | 天干夜天干天天天爽视频 | 国产精品美女久久久久久 | 欧美三级网站在线观看 | 国产真实夫妇交换视频 | 欧美人喂奶吃大乳 | 97自拍视频在线 | 日韩五码电影 | 播播激情网 | 国产三级国产精品 | 精品成人av一区二区三区 | 久草久草 | 日韩动漫av| 免费在线黄网 | 日韩影院一区二区 | 国产精品三级在线 | 日韩不卡中文字幕 | 色婷婷av一区 | 免费观看一区二区 | 久久久人人爽 | 黄色av电影网址 | 秋霞在线视频观看 | 不卡的一区二区 | 久久久久成人精品无码 | 久操青青 | 蜜臀久久99精品久久一区二区 | 日韩国产在线 | 香蕉久久久久久久av网站 | 69视频免费 | 久久久久亚洲av无码专区体验 | 亚洲一区 欧美 | 日本www视频在线观看 | 黄色a区| 黄色片视频免费 | 婷婷综合网站 | 刘亦菲毛片一区二区三区 | aaaaaa毛片 | 男男做爰猛烈啪啪高 | 日本在线不卡一区二区三区 | 黄色三级网络 | 一区视频网站 | 国产黄色一区二区三区 |