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")
你读过这个吗@谢谢你!我没有看到。我要试一试。如果你想回答这个问题,我会非常乐意给你一些爱。你读过这个吗@谢谢你!我没有看到。我要试一试。如果你想回答这个问题,我会非常乐意给你一些爱。