python爬虫与正则表达式(2)

初学阶段,已通过urllib.request.urlopen(req)方法获取到指定url代码,想要从中获取到图片url并获取其格式,爬的是百度首页,通过Sublime Text3的HTML/CSS/JS Prettify插件将获取到的代码进行优化,个人认为设置为html后优化较整齐,根据在谷歌浏览器上按F12后左上角的“select an element in the page to inspect it”功能找到图片对应代码格式为"...<空格>src="URL"<空格>...",着手写筛选出对应URL的正则表达式:

#正则搜索到图片url
reg=r'src="(.+?)" +'
reg_img=re.compile(reg)
new_code=code.decode('utf-8')  #在python3中很重要
imglist=reg_img.findall(new_code)
print(imglist)
>>>['//www.baidu.com/img/bd_logo1.png', '//www.baidu.com/img/bd_logo1.png?qua=high', '//www.baidu.com/img/baidu_jgylogo3.gif', '//www.baidu.com/img/baidu_jgylogo3.gif']

下方为输出结果,下面写从中筛选出要保存图片格式的方法:

def getType(code):
	pattern=r'\.([^\.]+)$'
	pattern_img=re.compile(pattern)
	imglist=pattern_img.findall(code)
	print(imglist[0])
	return imglist[0]
>>>png
>>>png?qua=high
>>>gif
>>>gif

发现一个问题,正则按照上面所写的根据"."来区分的话,第二个图片有误,由于能力原因,尝试许多次后无法通过修改pattern来直接将第二个筛选为‘png’,因为都是三位,则筛选出返回结果前三个的字符串,即imglist[0][0:3],若存在‘jpeg’格式文件,则通过判断第四位是非为空来返回,后面在图一代码块接着写下载图片的操作:

i=0
for img in imglist:	
	try:
		print(img)
		img_type=getType(img)
		urllib.request.urlretrieve('http:'+img, str(i)+'.'+img_type)
	except Exception as e:		
		print(str(e))
	i+=1

则会在当前py文件的同目录下下载‘0.png’、‘1.png’、‘2.gif’、‘3.gif’四张图片,至此本文研究的爬虫告一段落,下篇文章打算研究爬取动态网页及更广范围的信息,upup!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值