第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

python使用多進程爬取圖片

標簽:
Python

最近学习了一下python的多进程和多线程,于是就想到使用进程去现实一个爬虫。通过比较实用多进程比使用普通函数的效率更高,节省了大量的时间。话不多说,看下面的代码,希望对各位有所帮助。

复制代码

 1 import os, sys, io, urllib, requests, re, chardet, time 2 import multiprocessing 3  4 #设置系统输出流的编码为utf-8 5 sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf8') 6  7 headers = { 8     'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Mobile Safari/537.36' 9 }10 11 url = 'http://www.ivsky.com/tupian/ziranfengguang/'12 13 def Schedule(blocknum, blocksize, totalsize):14     """15         blocknum:已经下载的数据块16         blocksize:数据块的大小17         totalsize:远程文件的大小18     """19     per = blocknum * blocksize / totalsize * 100.020     if per > 100:21         per = 10022     print('当前下载进度: %.2f%%'%per)23 24 def download_page():25     try:26         res = requests.get(url, headers=headers)27         if res.status_code == 200:28             res.encoding = chardet.detect(res.content).get('encoding')#通过chardet库的detect方法获取页面的编码29             return res.text30     except requests.HTTPError as e:31         return None32 33 def parser_html(html):34     if not html:35         return36     patt = re.compile(r'<img class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="(.*?)" alt="(.*?)" />', re.S)#获取图片的链接和名字37     content = re.findall(patt, html)38     return content #返回图片链接和名字列表39 40 def download_pic(url, name):41     if not os.path.exists(r'./pic'):42         os.mkdir(r'./pic')43     filename = './pic/{}.jpg'.format(name)44     print('开始下载:{}'.format(name))45     urllib.request.urlretrieve(url, filename, Schedule)#使用urllib.request.urlretrieve方法下载图片并返回当前下载进度46     time.sleep(1)47 48 if __name__ == '__main__':49     html = download_page()50     contents = parser_html(html)51     for content in contents:52         p = multiprocessing.Process(target=download_pic, args=(content[0],content[1]))53         #启动进程和连接进程54         p.start()55         p.join()

复制代码

 下面是使用多进程和普通函数分别爬取图片的结果

多进程

https://img1.sycdn.imooc.com//5b93faed0001241302880362.jpg

普通函数

https://img1.sycdn.imooc.com//5b93faf6000195d304540503.jpg

 读者可以去试着运行一下,虽然这一段程序在使用多进程的时候比使用普通函数用时长(只有28张图片),但是读者可以自己试着将每一个超链接下的图片全部爬取,最后在比较效率。

原文出处:https://www.cnblogs.com/Lvg3687/p/9426948.html

點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消