python爬虫(1)下载任意网页图片
2016-07-11 11:28
791 查看
可以下载任意网页图片
本文是一个万能油, 当然本身也存在很多缺陷,因为本身写的正则表达式比较简单
但是作为爬虫的练手项目, 以及本事的思路还是很有借鉴意义的
本文是一个万能油, 当然本身也存在很多缺陷,因为本身写的正则表达式比较简单
但是作为爬虫的练手项目, 以及本事的思路还是很有借鉴意义的
#!/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)
相关文章推荐
- python 使用lxml解析html(xpath)
- python中json对象转换出错解决方法
- saltstack学习汇总
- python2.0_s12_day12_css样式详解
- 使用python测试你的电脑开启最大线程数
- Python爬虫实战(3):安居客房产经纪人信息采集
- Python获取当前时间的前(后)N天,前(后)N周,前(后)N月
- Python新手学习基础之数据类型——变量
- 深入Python(2): __init__.py 用法
- TensorFlow实战— —K-Means聚类
- Celery 踩坑笔记
- DAY7:leetcode #14 Longest Common Prefix
- Python中关于字符串问题
- 关于python urlopen 一个类似radio流的timeout方法
- python平行(3):【parallel python】与【sklearn joblib的parallel和delayed】性能对比
- [Jenkins] Use python requests to programatically get and set Jenkins job configuration
- python安装第三方插件出现的错误
- 爬虫笔记
- 一个程序学会python的流程控制
- mac 安装robotFramwork环境 以及wxPython 无法安装问题解决 (非常有用)