`
san_yun
  • 浏览: 2639335 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

图片抓取失败

 
阅读更多

今天发现一个错误日志:

 

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作为一个典型的网页图片抓取工具,它可以帮助用户高效地从目标网站获取所需的图片...

    FCK(fckeditor)远程图片上传功能

    6. **错误处理**:当图片抓取失败或保存失败时,需要有合适的反馈机制,告知用户出现问题并提供解决方案。 7. **性能优化**:对于大图片,可能需要进行缩略图处理,减少服务器存储和传输的压力。同时,考虑使用CDN...

    网站爬虫——图片抓取小工具

    这个"图片抓取小工具"很可能是一个exe可执行文件,用户可以直接在本地运行,无需编程知识,就能方便地从目标网站下载所需的图片资源。 爬虫技术的核心在于模拟人类浏览器的行为,通过HTTP或HTTPS协议向服务器发送...

    网页图片抓取工具(GetWebPic)

    网页图片抓取工具(GetWebPic)是一款专为用户设计的高效、实用的软件,用于从互联网上批量下载和管理图片。它可以帮助用户快速、方便地获取网页中的所有图片资源,节省了手动下载的繁琐步骤,尤其适用于需要大量...

    java编写的网站图片抓取小程序

    该程序是一个基于Java SE开发的简单网站图片抓取工具,主要展示了如何利用Java进行网络请求和数据解析,特别适用于初学者了解和学习Java网络编程。在这个项目中,开发者并未依赖任何特定的框架,而是直接使用Java的...

    实例20 屏幕抓图 实现图片的抓取

    8. **错误处理**:在实际编程过程中,一定要加入错误处理代码,对可能出现的失败情况进行处理,如内存分配失败、文件保存失败等。 通过以上步骤,你可以使用VC++ 6.0实现屏幕抓图功能,捕获并保存计算机屏幕上的...

    抓取网页图片V1.3

    1、支持多个网页的图片抓取,支持模板网页类似迅雷下载多个文件; 2、支持本机抓取和代理抓取; 3、支持手工中断抓取; 4、支持自定义图片存储目录,支持自动创建图片分类目录; 5、支持下载图片失败自动清理; 6、...

    苹果cms采集电影没有缩略图解决视频图片显示失败问题

    在使用苹果CMS进行电影资源采集时,可能会遇到一个问题,即采集的电影资源没有缩略图,导致视频的图片显示失败,这无疑会影响用户的浏览体验。要解决这个问题,我们可以采取一些技术手段来优化。 首先,我们要了解...

    android 的网页抓取

    这里,`imageView`是你想要显示图片的ImageView,`imageUrl`是图片的URL,`placeholder`是加载中的占位图,`ic_dialog_alert`是加载失败时的图标。 如果网页中的图片链接是相对路径,需要将其转换为绝对路径。可以...

    java多线程抓取图片

    Java多线程技术在爬虫应用中的重要性不言而喻,它能显著提升图片抓取的效率。本文将深入探讨如何使用Java实现多线程爬虫,以及压缩包中的三个示例案例。 首先,我们需要了解Java中的多线程概念。在Java中,通过创建...

    java爬虫,抓取网页图片

    Java爬虫技术是一种利用编程语言(本例中是Java)自动化地从互联网上...通过以上知识点的学习和实践,你可以构建一个基本的Java图片爬虫,实现从网页中抓取并下载图片的功能。记住,持续学习和实践是提升技能的关键。

    Python项目案例开发从入门到实战源代码第6章 爬虫应用——抓取百度图片

    在本项目案例中,我们将深入探讨Python编程在爬虫应用中的实际操作,特别是如何利用Python来抓取并下载百度图片。这个案例旨在帮助初学者掌握网络爬虫的基本技术和流程,同时也为进阶开发者提供了一个实战练习的机会...

    抓取URL路径的图片显示 MFC

    本主题聚焦于如何使用MFC来抓取网络上的图片资源,并在对话框中显示出来,这对于理解和实践网络编程具有重要的学习价值。 首先,我们需要理解URL(Uniform Resource Locator)是互联网上资源的唯一地址,它是访问...

    抓取网页信息

    本教程将介绍如何通过编程方式抓取网页信息,提取种子地址,并下载相关图片。 首先,我们需要了解基础的网络请求和网页解析技术。在Python中,可以使用requests库来发送HTTP请求获取网页内容。例如,我们可以编写一...

    python 抓取百度云分享数据,百度云最新接口抓取分享链接

    print(f"请求失败,状态码:{response.status_code}") ``` 接下来,我们需要解析返回的数据。这里假设返回的是JSON格式,我们可以使用json库将其转换为Python字典,然后遍历字典,提取我们需要的信息,如文件名、...

    百度地图抓取程序,可将百度电子地图的图片下载到本地

    把网上电子地图的图片下载到本地. 因为网上电子图片是分缩放级别的,可以直接将所有级别或才定制级别的图片下载下来,会放到相应的文件夹里面.可供使用百度地图引擎的程序直接使用. 不好意思,定这么高的分,...

    C#版小偷工具 网上资源自动抓取并插入数据库源码

    9. **异常处理**: 在处理网络请求和数据库操作时,可能会遇到各种异常,如网络连接错误、数据库操作失败等。良好的异常处理机制可以确保程序在遇到问题时能优雅地处理,而不是突然崩溃。 10. **数据清洗与预处理**:...

    Python爬虫抓取指定网页图片代码实例

    ### Python爬虫抓取指定网页...通过以上介绍,我们不仅学会了使用Python进行网页图片抓取的基本方法,还深入理解了正则表达式和BeautifulSoup在网页数据抓取中的应用。这为后续更复杂的数据抓取任务打下了坚实的基础。

    网站抓取精灵

    2. 会话保持:在处理需要登录的网站时,精灵能保持会话状态,模仿用户的真实行为,避免因频繁登录而导致的抓取失败。 三、数据解析与提取 1. HTML解析:使用内置的HTML解析器,网站抓取精灵能够识别网页结构,通过...

    C# vs2012编写多线程网络爬虫(爬图)

    1. **异常处理**:添加适当的异常处理机制,捕获可能出现的网络错误,如超时、重定向或连接失败等。 2. **延迟和重试**:在遇到错误时,可以设置一定的延迟后再重试下载,避免对目标服务器造成过大压力。 3. **并发...

Global site tag (gtag.js) - Google Analytics