您的位置:首页 > 理论基础 > 计算机网络

python下载网络图片

2016-10-29 18:16 260 查看
#!/usr/bin/env python
#-*- coding: utf-8 -*-
#通过urllib(2)
import urllib,urllib2,gevent
#引入正则表达式模块,时间模块
import re,time
from gevent import monkey

monkey.patch_all()

class Get_image():
def __init__(self,url,pages):
self.pages = pages
self.url = url
self.page_list = [] #列表页集合
def get_page_url(self):
# 得到所有列表页
for page in range(1, self.pages):
url = self.url + str(page) + "#comments"
self.page_list.append(url)

def geturllist(self,url):
url_list=[]
print url
s = urllib2.urlopen(url)
text = s.read()
#正则匹配,匹配其中的图片
html = re.search(r'<ol.*</ol>', text, re.S)
urls = re.finditer(r'<p><img src="(.+?)jpg" /></p>',html.group(),re.I)
for i in urls:
url=i.group(1).strip()+str("jpg")
url_list.append(url)
return url_list
def download(self,down_url,save_dir):
name=str(time.time())[:-3]+"_"+re.sub('.+?/','',down_url)
print name
urllib.urlretrieve(down_url, save_dir+name)
def do_img(self,save_dir):
jobs = []
self.get_page_url()
# 进行图片下载
for i in self.page_list:
for (downurl) in self.geturllist(i):
jobs.append(gevent.spawn(self.download, downurl,save_dir))#使用协成自动切换io
#self.download(downurl,save_dir)

gevent.joinall(jobs)

if __name__ == '__main__':
images = Get_image("http://jandan.net/ooxx/page-",10)
images.do_img("/data/python/image/")
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  url 图片 网络 python