python web-spider之图片保存

为了更好的展示爬取的目标网站内容,下载目标网站所使用的图片是有必要的。

保持图片在目标网站中的相对路径和名称是比较合适的方案,这需要对图片URL进行split处理。

创建相对路径的代码如下:

def createPath(url):
	folders=url.split('/')
	i=3
	path=folders[2]
	while i<len(folders)-1:
		path=os.path.join(path,folders[i])
		i+=1	
	if not os.path.exists(path):
		os.makedirs(path)
	path=path+"/"
	return path

从图片URL中获取文件名称:

filename=imgurl.split('/')[-1]

以下代码可以获取页面中的所有jpg图片,并保存到当前目录下与目标网站相一致的相对路径中。

import re
import urllib
import os
 
def getHtml(url):
	page = urllib.urlopen(url)
	html = page.read()
	return html

def createPath(url):
	folders=url.split('/')
	i=3
	path=folders[2]
	while i<len(folders)-1:
		path=os.path.join(path,folders[i])
		i+=1	
	if not os.path.exists(path):
		os.makedirs(path)
	path=path+"/"
	return path
def getImg(html):
	reg = r'src="?\'?(\S+\.jpg)"?\'?'
	imgre = re.compile(reg)
	imglist = imgre.findall(html)
	x = 0
	for imgurl in imglist:
		if not re.match("^http",imgurl):
			imgurl="http://image.baidu.com/"+imgurl
    		print imgurl
		filename=imgurl.split('/')[-1]
		path=createPath(imgurl)
		filename=path+filename
		print filename
		urllib.urlretrieve(imgurl,filename)

html = getHtml("http://image.baidu.com")
getImg(html)

上述代码会爬取image.baidu.com首页中所有的jpg图片,大部分图片并不在image.baidu.com这个服务器上,例如:http://img0.bdstatic.com/img/image/shouye/fslsdkdk.jpg,

这时代码会自动创建一个域名文件夹img0.bdstatic.com,然后在给文件夹下创建路径img/image/shouye/,最后下载文件fslsdkdk.jpg到img0.bdstatic.com/img/image/shouye/路径下。

参考

http://www.oschina.net/question/1016509_114210

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值