2016-11-28 10 views
0

Я хочу загрузить файл JSON из scrapyd, но он никогда не искал файлы, какой бы метод ссылки я использовал.Как получить доступ к файловому ресурсу из яйца python при развертывании искателя с помощью scrapyd?

Обычно у меня был открытый метод, за которым следует имя файла, и я помещал имя файла в корень яиц, а также папку с яйцами проектов, но ни в коем случае файлы не были найдены.

Если кто знает, как это сделать с полным примером, я был бы очень полезен.

Мои setup.py выглядит следующим образом

from setuptools import setup, find_packages 

import os, sys 
directory, filename = os.path.split(os.path.realpath(__file__)) 
sys.path.append(directory) 

setup(
    name='myscraper', 
    version='1.0', 
    packages=find_packages(), 
    entry_points={'scrapy': ['settings = myscraper.local_settings']}, 
    install_requires=['selenium', 'scrapy', 'pyyaml', 'yamlordereddictloader', 'pyvirtualdisplay'], 
    package_data={'mypackage': ['myscraper/configuration/seeds.json', 'myscraper/configuration/*.yml'], 
        }, 
    data_files=[("mydata", ["myscraper/configuration/seeds.json"])], 
    include_package_data=True, 
    zip_safe=False 
) 

проекта структуры

- my_crawler 
--- setup.py 
--- myscraper 
------- configuration 
-------------seeds.json 
------- myspider.py 
------- ... 

Как я могу прочитать файл JSON в myspider.py? Как я могу прочитать все файлы yaml в папке конфигурации?

Я хочу использовать некоторый код, аналогичный с:

# how to get the content from seeds.json ? 

content = pkgutil.get_data('mypackage', filename) 

# how to walk the configuration directory from the egg? 

for root, dirs, files in os.walk(config_dir): 
     for config_file in files: 
      config_file = open(os.path.join(root, config_file)) 
      config_dict = yaml.load(config_file, Loader=yamlordereddictloader.Loader) 
      visit = config_dict.get("visit") 
      self.configuration[visit] = config_dict 

  • связанных нитей

яйцо предостережений

https://github.com/scrapy/scrapyd-client

https://groups.google.com/forum/#!msg/scrapy-users/B70eq1_N3Fk/vR7aDeizj_sJ

https://support.scrapinghub.com/topics/1717-deploying-projects-with-resource-non-code-files/

https://support.scrapinghub.com/topics/725-including-additional-files-with-a-spider/

ответ

0
from png_resources import resource_string 
... 

    file_string = resource_string(
     __name__.split('.')[0], 
     'myscraper/configuration/seeds.json', 
    )