如何设置scrapy IMAGES_STORE相对路径

时间:2013-06-28 08:03:57

标签: python scrapy scrapyd

我正在尝试将IMAGES_STORE设置为相对路径,但我收到错误,如果我将IMAGES_STORE指定为完整路径,则表明其工作正常/home/vaibhav/scrapyprog/comparison/eScraperInterface/images

我得到的错误是link 实际上它给了我RuntimeError: OSError: [Errno 20] Not a directory: '/tmp/eScraper-1371463750-Lm8HLh.egg/images'错误,但是如果我设置完全IMAGE_STORE路径它工作正常可以有人告诉我如何指定相对路径...因为我需要在各种系统部署这个项目...这就是为什么我需要相对的道路......

import os
#------------------------------------------------------------------------------ 

projectDirPath = os.path.abspath(os.path.dirname((os.path.dirname(__file__))))
imagesDIRPath =  projectDirPath + "/images"

BOT_NAME = 'eScraper'
DOWNLOADER_DEBUG = True
CONCURRENT_REQUESTS = 200
AUTOTHROTTLE_DEBUG = True
AUTOTHROTTLE_ENABLED= True
DEPTH_STATS_VERBOSE = True

SPIDER_MODULES = ['eScraper.spiders']
NEWSPIDER_MODULE = 'eScraper.spiders'
COMMANDS_MODULE = 'eScraper.commands'
ITEM_PIPELINES = ['eScraper.pipelines.EscraperPipeline',
                  'eScraper.pipelines.MySQLStorePipeline']

IMAGES_STORE = imagesDIRPath


DOWNLOADER_MIDDLEWARES = {
                          'eScraper.rotate_useragent.RotateUserAgentMiddleware' :400,
                          'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware' : None
                          }


#------------------------------------------------------------------------------

我的项目结构:

├── eScraperInterface
│   ├── build
│   │   ├── bdist.linux-i686
│   │   └── lib.linux-i686-2.7
│   │       ├── eScraper
│   │       │   ├── commands
│   │       │   │   ├── __init__.py
│   │       │   │   └── runAllSpiders.py
│   │       │   ├── __init__.py
│   │       │   ├── items.py
│   │       │   ├── pipelines.py
│   │       │   ├── rotate_useragent.py
│   │       │   ├── settings.py
│   │       │   ├── spiders
│   │       │   └── userAgentList.py
│   │       ├── eScraperInterface
│   │       │   ├── __init__.py
│   │       │   ├── settings.py
│   │       │   ├── urls.py
│   │       │   └── wsgi.py
│   │       └── eScraperInterfaceApp
│   │           ├── __init__.py
│   │           ├── models.py
│   │           ├── tests.py
│   │           └── views.py
│   ├── checkImageExist.py
│   ├── eScraper
│   │   ├── commands
│   │   │   ├── __init__.py
│   │   │   ├── __init__.pyc
│   │   │   ├── runAllSpiders.py
│   │   │   └── runAllSpiders.pyc
│   │   ├── __init__.py
│   │   ├── __init__.pyc
│   │   ├── items.py
│   │   ├── items.pyc
│   │   ├── pipelines.py
│   │   ├── pipelines.pyc
│   │   ├── rotate_useragent.py
│   │   ├── rotate_useragent.pyc
│   │   ├── settings.py
│   │   ├── settings.py~
│   │   ├── settings.pyc
│   │   ├── spiders
│   │   ├── userAgentList.py
│   │   └── userAgentList.pyc
│   ├── eScraperInterface
│   │   ├── __init__.py
│   │   ├── __init__.pyc
│   │   ├── settings.py
│   │   ├── settings.pyc
│   │   ├── urls.py
│   │   ├── urls.pyc
│   │   ├── wsgi.py
│   │   └── wsgi.pyc
│   ├── eScraperInterfaceApp
│   │   ├── __init__.py
│   │   ├── __init__.pyc
│   │   ├── models.py
│   │   ├── models.py~
│   │   ├── models.pyc
│   │   ├── tests.py
│   │   └── views.py
│   ├── images
│   ├── __init__.py
│   ├── manage.py
│   ├── project.egg-info
│   │   ├── dependency_links.txt
│   │   ├── entry_points.txt
│   │   ├── PKG-INFO
│   │   ├── SOURCES.txt
│   │   └── top_level.txt
│   ├── scrapy.cfg
│   └── setup.py
├── README.txt
└── README.txt~

1 个答案:

答案 0 :(得分:5)

假设您已settings.py提供eScraperInterface/eScraper/settings.py

CUR_DIR = os.path.dirname(os.path.realpath(__file__))
IMAGES_STORE = os.path.join(CUR_DIR, '..', 'images')

希望有所帮助。