首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抓取图像,空响应[抓取]

抓取图像,空响应[抓取]
EN

Stack Overflow用户
提问于 2016-01-18 04:57:01
回答 3查看 884关注 0票数 0

我使用了一个使用scrapy进行图像抓取的例子。

但是我没有在我的计算机上保存任何文件:

这是我使用的代码:

//Items.py//

代码语言:javascript
复制
import scrapy

class ImgurItem(scrapy.Item):
    title = scrapy.Field()
    image_urls = scrapy.Field()
    images = scrapy.Field()

//settings.py//

代码语言:javascript
复制
BOT_NAME = 'imgur'

SPIDER_MODULES = ['imgur.spiders']
NEWSPIDER_MODULE = 'imgur.spiders'
ITEM_PIPELINES = {'scrapy.contrib.pipeline.images.ImagesPipeline': 1}
IMAGES_STORE = '/home/ubuntu/imgurFront/'

//imgur_spider.py//

代码语言:javascript
复制
import scrapy

from scrapy.contrib.spiders import Rule, CrawlSpider
from scrapy.contrib.linkextractors import LinkExtractor
from imgur.items import ImgurItem

class ImgurSpider(CrawlSpider):
    name = 'imgur'
    allowed_domains = ['imgur.com']
    start_urls = ['http://www.imgur.com']
    rules = [Rule(LinkExtractor(allow=['/gallery/.*']), 'parse_imgur')]

    def parse_imgur(self, response):
        image = ImgurItem()
        image['title'] = response.xpath(\
            "//h2[@id='image-title']/text()").extract()
        rel = response.xpath("//img/@src").extract()
        image['image_urls'] = ['http:'+rel[0]]
        return image

这是我得到的响应类型:

代码语言:javascript
复制
{'image_urls': [u'http:data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'],
 'images': [],
 'title': []}

以下是我得到的错误:

代码语言:javascript
复制
[scrapy] ERROR: File (unknown-error): Error processing file from <GET http://i.imgur.com/BGVbmqM.jpg> referred in <None>




DEBUG: Retrying <GET http:howard-funk.jpg> (failed 1 times): Connection was refused by other side: 111: Connection refused


DEBUG: Scraped from <200
EN

回答 3

Stack Overflow用户

发布于 2016-01-18 09:53:35

你用的是哪个版本的scrapy?请确保您有在文件夹上写入的权限。

在最后一种情况下,您可以创建自定义管道http://doc.scrapy.org/en/latest/topics/media-pipeline.html#custom-images-pipeline-example并捕获一些错误

票数 0
EN

Stack Overflow用户

发布于 2016-01-18 10:08:07

看起来比网站屏蔽机器人连接。尝试模拟http代理(谷歌上的RandomUserAgentMiddleware)和/或使用TOR或proxy和scrapy (settings.py上的HTTP_PROXY)。

票数 0
EN

Stack Overflow用户

发布于 2016-01-18 21:45:43

这里有两个问题:

使用urljoin

  1. 是获取完全限定URL的推荐方法:

image'image_urls‘= [response.urljoin(rel)]

  • You正在获取base64编码的图像数据。您应该跳过带有data:image前缀的值,或者以不同的方式处理它们(因为这是图像文件内容,您不需要下载它)。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34843580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档