我一直在使用scrapy抓取网站并每隔几个月下载一次jpeg。今天,当我爬网站时,我注意到我的图像确实是扭曲的,但是当我转到图像的URL时,图像不会失真。我非常确定我的代码是正确的,并且我已经在其他网站上尝试过,问题仍然存在。
这来自抓取http://imgur.com/gallery/pcyl9并使用xpath查找http://i.imgur.com/6L31lEv.jpg。
蜘蛛(example.py):
import scrapy
from test.items import TestItem
class ExampleSpider(scrapy.Spider):
name = "example"
allowed_domains = ["imgur.com"]
start_urls = (
'http://imgur.com/gallery/pcyl9',
)
def parse(self, response):
item = TestItem()
item['img_url'] = response.xpath('//link[@rel="image_src"]/@href').extract()
return item
我将jpeg URL发送到一个简单的图像管道(pipelines.py):
import scrapy
from scrapy.pipelines.images import ImagesPipeline
class TestPipeline(ImagesPipeline):
def get_media_requests(self, item, info):
image_url = item['img_url'][0]
yield scrapy.Request(image_url)
items.py:
import scrapy
class TestItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
img_url = scrapy.Field()
settings.py:
BOT_NAME = 'test'
SPIDER_MODULES = ['test.spiders']
NEWSPIDER_MODULE = 'test.spiders'
ROBOTSTXT_OBEY = True
ITEM_PIPELINES = {
'test.pipelines.TestPipeline': 1
}
IMAGES_STORE = '/Users/brian/Projects/nb/test'
自从我上次使用它以来,我唯一能想到的就是我重新安装了可能更新scrapy和任何依赖项的anaconda。我用python 2.7.12运行scrapy v1.1.1。
我在具有scrapy 1.0.3的其他计算机上运行代码并正确下载图像。然后我在scda环境中的问题计算机上安装了scrapy 1.0.3,只是scrapy及其依赖,但图像仍然失真。