Python 2.7 部署到刮取中心和爬行器运行时未找到URL文本文件 问题

Python 2.7 部署到刮取中心和爬行器运行时未找到URL文本文件 问题,python-2.7,scrapy,scrapy-spider,Python 2.7,Scrapy,Scrapy Spider,我的爬行器依赖于一个.txt文件,该文件包含爬行器指向的URL。我已经将该文件放在了spider代码所在的同一目录中,并且放在了它之前的每个目录中(Hail-mary方法);最终结果是: Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/scrapy/core/engine.py", line 127, in _next_request request = next(slot

我的爬行器依赖于一个
.txt
文件,该文件包含爬行器指向的URL。我已经将该文件放在了spider代码所在的同一目录中,并且放在了它之前的每个目录中(Hail-mary方法);最终结果是:

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/scrapy/core/engine.py", line 127, in _next_request
    request = next(slot.start_requests)
  File "/app/__main__.egg/CCSpider1/spiders/cc_1_spider.py", line 41, in start_requests
    for line in fileinput.input({url_file}):
  File "/usr/local/lib/python2.7/fileinput.py", line 237, in next
    line = self._readline()
  File "/usr/local/lib/python2.7/fileinput.py", line 339, in _readline
    self._file = open(self._filename, self._mode)
IOError: [Errno 2] No such file or directory: 'url_list_20171028Z.txt' 
问题: 如何确保在运行spider时始终找到
url\u list\u 20171028Z.txt
?这个URL文本文件每天都会更新(一个新的文件上盖有第二天的戳记--e.x:
URL\u list\u 20171029Z.txt
,等等)

背景 谢谢你对我的问题发表意见。我是Python的新手(2017年6月开始学习),我参加这个剪贴项目是为了好玩,也是为了学习。我最近(2017年10月)才开始使用scrapy,因此,对于我头脑中出现的任何明显的简单性,我深表歉意

此项目已上载到网站。当我试图从Scraping Hub仪表板运行spider时,这个问题突然出现。spider的部署是成功的,我制作了一个
requirements.txt
文件来下载spider中使用的
Pandas

我的代码 下面的代码是调用URL文本文件的地方。我修改了新项目启动时启动的默认spider。当我在自己的电脑上运行spider时;它按需要运行。下面是调用“url_list_20171028Z.txt”文件以获取从中获取数据的url的代码部分:

def start_requests(self):
        s_time = strftime("%Y%m%d" ,gmtime())
        url_file = 'url_list_{0}Z.txt'.format(s_time)
        for line in fileinput.input({url_file}):
            url = str.strip(line)
            yield scrapy.Request(url=url, callback=self.parse)

非常感谢您抽出时间帮助我解决这个问题。如果您需要我添加更多信息,请告诉我!谢谢大家!

您需要在
setup.py
文件的package\u数据部分声明文件

例如,如果您的Scrapy项目具有以下结构:

myproject/
  __init__.py
  settings.py
  resources/
    cities.txt
scrapy.cfg
setup.py
您可以在
setup.py
中使用以下内容来包含
cities.txt
文件:

setup(
    name='myproject',
    version='1.0',
    packages=find_packages(),
    package_data={
        'myproject': ['resources/*.txt']
    },
    entry_points={
        'scrapy': ['settings = myproject.settings']
    },
    zip_safe=False,
)
请注意,
zip\u-safe
标志设置为False,因为在某些情况下可能需要这样做

现在,您可以从
setting.py
访问
cities.txt
文件内容,如下所示:

import pkgutil

data = pkgutil.get_data("myproject", "resources/cities.txt")

您需要在
setup.py
文件的package\u数据部分声明文件

例如,如果您的Scrapy项目具有以下结构:

myproject/
  __init__.py
  settings.py
  resources/
    cities.txt
scrapy.cfg
setup.py
您可以在
setup.py
中使用以下内容来包含
cities.txt
文件:

setup(
    name='myproject',
    version='1.0',
    packages=find_packages(),
    package_data={
        'myproject': ['resources/*.txt']
    },
    entry_points={
        'scrapy': ['settings = myproject.settings']
    },
    zip_safe=False,
)
请注意,
zip\u-safe
标志设置为False,因为在某些情况下可能需要这样做

现在,您可以从
setting.py
访问
cities.txt
文件内容,如下所示:

import pkgutil

data = pkgutil.get_data("myproject", "resources/cities.txt")

你读过这个吗@谢谢你!我没有看到。我要试一试。如果你想回答这个问题,我会非常乐意给你一些爱。你读过这个吗@谢谢你!我没有看到。我要试一试。如果你想回答这个问题,我会非常乐意给你一些爱。