今天发现一个错误日志:
2013-06-06 12:25:13,332 [ERROR] upload.service.UploadFileService - image open error ,url = http://img.xitisi.com/Commodity/BOBOTou_2204/RiXiFaXingNvShengJiaFa_HuaBuWu2011XinKuan_QiLiuHaiBoboBoBoTouXiuLianDuanFaZongSe20120210034904.jpg ,cannot identify image fil
看了一下图片的头信息:
Accept-Ranges | bytes |
Content-Encoding | gzip |
Content-Length | 452449 |
Content-Type | image/jpeg |
Date | Thu, 06 Jun 2013 05:03:08 GMT |
Etag | "8041952b9a50cd1:1a9a" |
Last-Modified | Fri, 22 Jun 2012 17:12:15 GMT |
Server | Microsoft-IIS/6.0 |
Vary | Accept-Encoding |
X-Powered-By | ASP.NET |
原来是通过gzip压缩过,所以Image无法识别,需要先处理一下。
解决办法:
1. 通过python的gzip反解
def _read_content(self,response): content_type = response.headers.get('Content-Type') content_encoding = response.headers.get("Content-Encoding") if response.code == 200 and content_type and content_type.find('image')!=-1: data = StringIO(response.read()) if content_encoding=="gzip": data = gzip.GzipFile(fileobj=data).read() data = StringIO((data)) return data else: logger.error("can't open image ,content type=%s, url=%s"%(content_type,url)) return None
2. 在请求头中指定不支持gzip
self.headers = {} self.headers['User-Agent'] = """Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB6""" self.headers['Accept'] = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' self.headers['Accept-Encoding'] = 'identity' self.headers['Accept-Language'] = "zh,en-us;q=0.7,en;q=0.3" self.headers['Accept-Charset'] = "ISO-8859-1,utf-8;q=0.7,*;q=0.7" self.headers['Connection'] = "keep-alive" self.headers['Keep-Alive'] = "115" self.headers['Cache-Control'] = "no-cache" def open(self, url): try: response = self.opener.open(urllib2.Request(url, headers=self.headers),timeout=self.timeout) data = self._read_content(response) return data except Exception,e: logger.error(url) logger.exception(e) return None
相关推荐
网页图片抓取工具,通常指的是能够自动从网页中批量下载图片的应用程序,这些工具极大地简化了用户收集网络图片的过程。GetWebPic作为一个典型的网页图片抓取工具,它可以帮助用户高效地从目标网站获取所需的图片...
6. **错误处理**:当图片抓取失败或保存失败时,需要有合适的反馈机制,告知用户出现问题并提供解决方案。 7. **性能优化**:对于大图片,可能需要进行缩略图处理,减少服务器存储和传输的压力。同时,考虑使用CDN...
这个"图片抓取小工具"很可能是一个exe可执行文件,用户可以直接在本地运行,无需编程知识,就能方便地从目标网站下载所需的图片资源。 爬虫技术的核心在于模拟人类浏览器的行为,通过HTTP或HTTPS协议向服务器发送...
网页图片抓取工具(GetWebPic)是一款专为用户设计的高效、实用的软件,用于从互联网上批量下载和管理图片。它可以帮助用户快速、方便地获取网页中的所有图片资源,节省了手动下载的繁琐步骤,尤其适用于需要大量...
该程序是一个基于Java SE开发的简单网站图片抓取工具,主要展示了如何利用Java进行网络请求和数据解析,特别适用于初学者了解和学习Java网络编程。在这个项目中,开发者并未依赖任何特定的框架,而是直接使用Java的...
8. **错误处理**:在实际编程过程中,一定要加入错误处理代码,对可能出现的失败情况进行处理,如内存分配失败、文件保存失败等。 通过以上步骤,你可以使用VC++ 6.0实现屏幕抓图功能,捕获并保存计算机屏幕上的...
1、支持多个网页的图片抓取,支持模板网页类似迅雷下载多个文件; 2、支持本机抓取和代理抓取; 3、支持手工中断抓取; 4、支持自定义图片存储目录,支持自动创建图片分类目录; 5、支持下载图片失败自动清理; 6、...
在使用苹果CMS进行电影资源采集时,可能会遇到一个问题,即采集的电影资源没有缩略图,导致视频的图片显示失败,这无疑会影响用户的浏览体验。要解决这个问题,我们可以采取一些技术手段来优化。 首先,我们要了解...
这里,`imageView`是你想要显示图片的ImageView,`imageUrl`是图片的URL,`placeholder`是加载中的占位图,`ic_dialog_alert`是加载失败时的图标。 如果网页中的图片链接是相对路径,需要将其转换为绝对路径。可以...
Java多线程技术在爬虫应用中的重要性不言而喻,它能显著提升图片抓取的效率。本文将深入探讨如何使用Java实现多线程爬虫,以及压缩包中的三个示例案例。 首先,我们需要了解Java中的多线程概念。在Java中,通过创建...
Java爬虫技术是一种利用编程语言(本例中是Java)自动化地从互联网上...通过以上知识点的学习和实践,你可以构建一个基本的Java图片爬虫,实现从网页中抓取并下载图片的功能。记住,持续学习和实践是提升技能的关键。
在本项目案例中,我们将深入探讨Python编程在爬虫应用中的实际操作,特别是如何利用Python来抓取并下载百度图片。这个案例旨在帮助初学者掌握网络爬虫的基本技术和流程,同时也为进阶开发者提供了一个实战练习的机会...
本主题聚焦于如何使用MFC来抓取网络上的图片资源,并在对话框中显示出来,这对于理解和实践网络编程具有重要的学习价值。 首先,我们需要理解URL(Uniform Resource Locator)是互联网上资源的唯一地址,它是访问...
本教程将介绍如何通过编程方式抓取网页信息,提取种子地址,并下载相关图片。 首先,我们需要了解基础的网络请求和网页解析技术。在Python中,可以使用requests库来发送HTTP请求获取网页内容。例如,我们可以编写一...
多线程下载功能可以让用户在较短的时间内完成更多图片的下载任务,而断点续传则能够应对网络波动带来的不便,保证下载任务不会因为网络中断而失败,从而大幅减少重复下载的次数。这样不仅节省了用户的时间,也提升了...
print(f"请求失败,状态码:{response.status_code}") ``` 接下来,我们需要解析返回的数据。这里假设返回的是JSON格式,我们可以使用json库将其转换为Python字典,然后遍历字典,提取我们需要的信息,如文件名、...
把网上电子地图的图片下载到本地. 因为网上电子图片是分缩放级别的,可以直接将所有级别或才定制级别的图片下载下来,会放到相应的文件夹里面.可供使用百度地图引擎的程序直接使用. 不好意思,定这么高的分,...
9. **异常处理**: 在处理网络请求和数据库操作时,可能会遇到各种异常,如网络连接错误、数据库操作失败等。良好的异常处理机制可以确保程序在遇到问题时能优雅地处理,而不是突然崩溃。 10. **数据清洗与预处理**:...
### Python爬虫抓取指定网页...通过以上介绍,我们不仅学会了使用Python进行网页图片抓取的基本方法,还深入理解了正则表达式和BeautifulSoup在网页数据抓取中的应用。这为后续更复杂的数据抓取任务打下了坚实的基础。
2. 会话保持:在处理需要登录的网站时,精灵能保持会话状态,模仿用户的真实行为,避免因频繁登录而导致的抓取失败。 三、数据解析与提取 1. HTML解析:使用内置的HTML解析器,网站抓取精灵能够识别网页结构,通过...