今天要下载很多张图片,手动麻烦,于是写了个小程序。期间遇到不少问题。
最主要的一个是,访问某些网页会返回403 Forbidden,后来在加入了header信息之后得到解决。记录下。
这里用到了正则,urllib网页编程等知识。好久没用了,算是复习。
# -*- encoding:UTF-8 -*-
import re,urllib2
def getPage(url):
\'\'\'下载文件html代码,找出一楼的核心代码\'\'\'
opener = urllib2.build_opener()
#不加头信息则出现403错误和乱码
opener.addheaders = [(\'User-agent\', \'Mozilla/5.0\')];
htmlAll = opener.open( url ).read()
reg1Floor = \'<div class="msgfont">(.*?)</div>\'
html = re.search(reg1Floor,htmlAll)
html = html.group()
#文件保存编码和文件编辑编码都是utf-8,所以decode一次,不然会出现乱码,但是不影响结果。
return html.decode(\'utf-8\')
def getImg(url):
\'\'\'从核心代码中照图图片地址,并且下载保存、命名\'\'\'
regImg = \'<img src="(.*?)" alt="" />\'
dir = \'F:\\My_Document\\Desktop\\temp\\\'
pageHtml = getPage(url)
#找到所有图片地址
imglist = re.findall(regImg,pageHtml)
#print imglist
for index in xrange(1,len(imglist)+1):
finename = dir + str(index) + \'.jpg\'
urllib.urlretrieve(imglist[index-1], finename)
print finename + \' ok!\'
if __name__ == \'__main__\':
getImg(\'http://topic.csdn.net/u/20101013/11/024465A6-8E16-444C-9A09-DD374D29044C.html\')