无法将文件添加到Scrapy Cloud并在Settings.py中将其用于ScrapyProxies

时间:2017-05-30 15:53:07

标签: python scrapy web-crawler

我使用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个小时但它不起作用。

我很感激一些指导。

非常感谢!

1 个答案:

答案 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.pyPROXY_LIST设置使用sysos解析资源文件路径:

$ 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