python版本:3.5.4
系統:win10 x64
import urllib.request
url =
''file
='***.mp4'
urllib.request.retrieve(url,
file
)
但是博主在使用過程中發現,該函式沒有timeout方法。使用時,可能由於網路問題導致假死!
使用方法如下:
import urllib.request
url =
''file
='***.mp4'
response = urllib.request.urlopen(url, timeout=5)
data = response.read(
)with
open
(file
,'wb'
)as video:
video.write(data)
此函式有timeout設定,可以避免假死。
偽**如下:
import urllib.request
import socket
from urllib import error
from queue import queue
from threading import thread
import os
class
downloadworker
(thread)
:#定義乙個類,繼承自thread類,重寫其run函式
def__init__
(self, queue)
: thread.__init__(self)
self.queue = queue #標準的多執行緒實現方法都使用了queue
defrun
(self)
:while
true
: link,
file
= self.queue.get(
)#從佇列中獲取一組**以及對應的儲存位置
try:
#使用try except方法進行各種異常處理
)#標記佇列中的乙個元素已經被處理
defmain()
: queue = queue(
)#定義佇列
for x in
range(8
):#開啟8個執行緒
worker = downloadworker(queue)
worker.daemon =
true
worker.start(
)for linedata in txtdata:
#向佇列中放入資料
link = linedata[0]
file
= linedata[1]
queue.put(
(link,
file))
queue.join(
)#等待佇列中的資料被處理完畢
if __name__ ==
'__main__'
: main(
)
爬蟲 分布式爬蟲
爬蟲的本質 很多搞爬蟲的總愛吹噓分布式爬蟲,彷彿只有分布式才有逼格,不是分布式簡直不配叫爬蟲,這是一種很膚淺的思想。分布式只是提高爬蟲功能和效率的乙個環節而已,它從來不是爬蟲的本質東西。爬蟲的本質是網路請求和資料處理,如何穩定地訪問網頁拿到資料,如何精準地提取出高質量的資料才是核心問題。分布式爬蟲只...
分布式爬蟲
乙個基於scrapy redis的分布式爬蟲模板,在scrapy redis自帶的example的基礎上進行修改,新增在實際爬取過程中大部分爬蟲可能用到的功能,使的構建分布式爬蟲更加的簡單。scrapy redis windows ubuntu sudo apt get install redis ...
分布式爬蟲
修改普通爬蟲專案為分布式爬蟲 1.主爬蟲檔案myspider.py 做如下修改,其他不做修改 import scrapy from items import myitem 匯入資料模型 from scrapy redis.spiders import redisspider 匯入scrapy red...