您好,登錄后才能下訂單哦!
小編給大家分享一下python爬蟲中線程池如何創建并獲取文件,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
python的五大特點:1.簡單易學,開發程序時,專注的是解決問題,而不是搞明白語言本身。2.面向對象,與其他主要的語言如C++和Java相比, Python以一種非常強大又簡單的方式實現面向對象編程。3.可移植性,Python程序無需修改就可以在各種平臺上運行。4.解釋性,Python語言寫的程序不需要編譯成二進制代碼,可以直接從源代碼運行程序。5.開源,Python是 FLOSS(自由/開放源碼軟件)之一。
利用線程池進行視頻爬取
#爬取梨視頻數據 import requests import re from lxml import etree from multiprocessing.dummy import Pool import random # 定義獲取視頻數據方法 def getVideoData(url): # url為列表中的視頻url return requests.get(url=url,headers=headers).content # 定義存儲數據方法 def saveVideo(data): fileName = str(random.randint(0,5000))+'.mp4' with open(fileName,'wb') as fp: fp.write(data) # 爬取數據 #實例化一個線程池對象,開啟5個線程池 pool = Pool(5) url = 'https://www.pearvideo.com/category_1' headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36' } page_text = requests.get(url=url,headers=headers).text tree = etree.HTML(page_text) li_list = tree.xpath('//div[@id="listvideoList"]/ul/li') video_url_list = [] # 存的是將要下載視頻的url for li in li_list: detail_url = 'https://www.pearvideo.com/'+li.xpath('./div/a/@href')[0] detail_page = requests.get(url=detail_url,headers=headers).text #因為視頻連接不在標簽匯中,而是一個js語句,所以用正則匹配 video_url = re.findall('srcUrl="(.*?)",vdoUrl',detail_page,re.S)[0] video_url_list.append(video_url) # map函數的應用:參數1:回調函數,參數2:列表; #將列表中的參數賦值給回調函數的形參,讓回調函數處理 video_data_list = pool.map(getVideoData,video_url_list) pool.map(saveVideo,video_data_list)
以上是“python爬蟲中線程池如何創建并獲取文件”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。