可以下载任意网页图片
本文是一个万能油, 当然本身也存在很多缺陷,因为本身写的正则表达式比较简单
但是作为爬虫的练手项目, 以及本事的思路还是很有借鉴意义的
#!/usr/bin python
#--*-- coding:utf-8 --*--
import os
import urllib
import re
import time
import urllib2
import HTMLParser
#获取页面内容
def gethtml(url):
print u\'start crawl %s ...\' % url
headers = {\'User-Agent\':\'Mozilla/5.0 (Windows NT 6.2; rv:16.0) Gecko/20100101 Firefox/16.0\'}
req = urllib2.Request(url=url,headers=headers)
try:
html = urllib2.urlopen(req).read().decode(\'utf-8\')
html=HTMLParser.HTMLParser().unescape(html)#处理网页内容, 可以将一些html类型的符号如" 转换回双引号
except urllib2.HTTPError,e:
print u"连接失败,错误原因:%s " % e.code
return None
except urllib2.URLError,e:
if hasattr(e,\'reason\'):
print u"连接失败,错误原因:%s " % e.reason
return None
return html
def getImageList(html):
#reg = "http:*?\.jpg"
reg = \'http[^"}]*?(?:\.jpg|\.png|\.jpeg)\'#匹配图片url的正则表达式
imgre = re.compile(reg)
imgList = re.findall(imgre,html)
return imgList
#打印所有的图片的地址并存贮到本地
def printImageList(imgList):
with open("webImage/url.txt","wb+") as f:
for i in imgList:
print i
f.write(i+"\r\n")
#下载存贮图片到本地
def download(imgList, page):
x = 1
for imgurl in imgList:
print \'Download \'+imgurl
urllib.urlretrieve(imgurl,\'./webImage/%s_%s.jpg\'%(page,x))
x+=1
print \'Download file \'+ str(x)+ \' fiel\\'s end\'
def downImageNum(pagenum):
page = 1
pageNumber = pagenum
while(page <= pageNumber):
html = getHtml(url)#获得url指向的html内容
imageList = getImageList(html)
printImageList(imageList)#打印所有的图片的地址
download(imageList,page)#下载所有的图片
page = page+1
if __name__ == \'__main__\':
print \'\'\'
*****************************************
** Welcome to python of Image **
** Modify on 2017-05-09 **
** @author: Jimy _Fengqi **
*****************************************
\'\'\'
os.system(\'mkdir webImage\')#创建文件存贮目录
url = raw_input("enter the web page\n URL:")
if not url:
print \'the url in None , please try again\'
break
downImageNum(1)
time.sleep(10)