1.get_savefile_path()
函数内,sys.path[0]获取执行函数上一级的目录路径,os.path.join用来连接两个地址,第二个参数是一个字符串,连接到前一个末尾。
2.get_url_info
获取你想要得到的哪个URL的内容
3.get_img_info
用来解析内容,返回图片的路径。 reg = r'src="(.+?.jpg)" pic_ext'使用正则表达式匹配图片路径, re.compile将字符串转化为一个正则表达式,re.findall(imre,htmlinfo)把后面的需要匹配的内容和前面的正则表达式相匹配。返回一个list。
4.download_file
将图片下载至本地。urllib.urlretrieve()函数第一个参数是你的图片地址,第二个是保存的路径,这里注意的是,这里路径里面直接写上需要保存成什么文件名和类型,%S用来替换数据,字符串后面跟上需要替换的数据,用空格隔开
这里我用路径拼接函数拼接成完整的路径。
注意:
以下代码直接拷贝即可,不过要在你的运行的文件同一级下面,新建一个名称为“assets”的文件夹,是用来保存获得的图片
import re,sys,os
import urllib.request as urllib
#获取保存文件的路径
def get_savefile_path():
return os.path.join(sys.path[0],"assets")
#URL中获取内容
def get_url_info(httpurl):
pg = urllib.urlopen(httpurl)
htmlinfo = pg.read().decode('utf-8')
return htmlinfo
#从内容中使用正则表达式匹配出图片的路径
def get_img_info(htmlinfo):
reg = r'src="(.+?\.jpg)" pic_ext'
imre = re.compile(reg)
imglist = re.findall(imre,htmlinfo)
return imglist
#将图片下载到指定的路径
def download_file(filelist):
x = 1
for i in filelist:
savefilepath = get_savefile_path()
urllib.urlretrieve(i,os.path.join(savefilepath,"%s.jpg" %x))
x = x+1
html = get_url_info("http://tieba.baidu.com/p/2460150866")
htlist = get_img_info(html)
download_file(htlist)
网友评论