我使用MANIFEST.in,我看到该文件已加载到添加到Scrapy Cloud的egg文件夹中。但我不断收到错误。
这是我的项目: https://dl.dropbox.com/s/b84d2sk8zu8mj34/bases_de_datos.zip
如果我直接在我的电脑上运行它并且它在settings.py上的文件proxylist.txt上运行完美,但是一旦我将它加载到ScrapyCloud上它就不起作用。
有人可以帮我解决这个问题吗?我得到了错误说
IOError: [Errno 2] No such file or directory: '../proxylist.txt'
IOError: [Errno 2] No such file or directory: 'proxylist.txt'
IOError: [Errno 2] No such file or directory: '/resources/proxylist.txt'
我尝试尽可能超过45个小时但它不起作用。
我很感激一些指导。
非常感谢!
答案 0 :(得分:1)
这是一个示例Scrapy项目,名为" fileresource",我在Scrapy Cloud上部署并使用本地文件作为包资源。
$ tree
.
├── fileresource
│ ├── __init__.py
│ ├── items.py
│ ├── middlewares.py
│ ├── pipelines.py
│ ├── resources
│ │ └── mylist.txt
│ ├── settings.py
│ └── spiders
│ ├── example.py
│ └── __init__.py
├── requirements.txt
├── scrapinghub.yml
├── scrapy.cfg
└── setup.py
带有代理列表的示例文件(假的,仅用于测试):
$ cat fileresource/resources/mylist.txt
http://localhost:45793
http://localhost:45794
http://localhost:45795
这是一个示例settings.py
,PROXY_LIST
设置使用sys
和os
解析资源文件路径:
$ cat fileresource/settings.py
# -*- coding: utf-8 -*-
import os
import sys
BOT_NAME = 'fileresource'
SPIDER_MODULES = ['fileresource.spiders']
NEWSPIDER_MODULE = 'fileresource.spiders'
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.retry.RetryMiddleware': 90,
'scrapy_proxies.RandomProxy': 100,
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 110,
}
PROXY_LIST = os.path.join(os.path.dirname(sys.modules['fileresource'].__file__),
'resources/mylist.txt')
setup.py
非常像the example in Scrapinghub's knowledge base:
$ cat setup.py
# Automatically created by: shub deploy
from setuptools import setup, find_packages
setup(
name = 'fileresource',
version = '1.0',
packages = find_packages(),
package_data={
'fileresource': ['resources/*.txt']
},
entry_points = {'scrapy': ['settings = fileresource.settings']},
zip_safe=False,
)
我使用requirements.txt
文件scrapy-proxies
进行了测试:
$ cat requirements.txt
scrapy-proxies
$ cat scrapinghub.yml
project: 123456789
requirements:
file: requirements.txt