Scrapinghub вставляет мои результаты в журнал, а не в элемент

У меня есть работающий проект паука для извлечения содержимого URL-адресов (без css). Я просканировал несколько наборов данных и сохранил их в серии файлов .csv. Теперь я пытаюсь настроить его для работы на Scrapinghub, чтобы провести длительный парсинг. Пока что я могу загрузить паука и работать на Scrapinghub. Моя проблема в том, что результат появляется в «журнале», а не в «элементе». Количество данных превышает емкость журнала и, следовательно, выдает ошибку. Как я могу настроить свои конвейеры/экстрактор для работы и вернуть файл js или csv? Я доволен решением, в котором очищенные данные отправляются в базу данных. Как я не смог добиться этого тоже. Любое руководство приветствуется.

Паук:

class DataSpider(scrapy.Spider):
name = "Data_2018"

def url_values(self):
    time = list(range(1538140980, 1538140820, -60))
    return time

def start_requests(self):
    allowed_domains = ["https://website.net"]
    list_urls = []
    for n in self.url_values():
        list_urls.append("https://website.net/.../.../.../all/{}".format(n))

    for url in list_urls:
        yield scrapy.Request(url=url, callback=self.parse, dont_filter=True)

def parse(self, response):
    data = response.body
    items = positionsItem()
    items['file'] = data
    yield items

Трубопровод

class positionsPipeline(object):

def process_item(self, item, spider):
    return item

Настройки

BOT_NAME = 'Positions'
SPIDER_MODULES = ['Positions.spiders']
NEWSPIDER_MODULE = 'Positions.spiders'
USER_AGENT = get_random_agent()
ROBOTSTXT_OBEY = True
CONCURRENT_REQUESTS = 32
DOWNLOAD_DELAY = 10
SPIDER_MIDDLEWARES = {
'Positions.middlewares.positionsSpiderMiddleware': 543,
    }
DOWNLOADER_MIDDLEWARES = {
   'Positions.middlewares.positionsDownloaderMiddleware':       543,
  }
ITEM_PIPELINES = {
   'Positions.pipelines.positionsPipeline': 300,
}
HTTPCACHE_ENABLED = True
HTTPCACHE_EXPIRATION_SECS = 0
HTTPCACHE_DIR = 'httpcache'
HTTPCACHE_IGNORE_HTTP_CODES = []
HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'

предмет


class positionsItem(scrapy.Item):
file = scrapy.Field()

Журнал Scrapinghub показывает:

13: 2019-02-28 07:46:13 ERROR   Rejected message because it was too big: ITM {"_type":"AircraftpositionsItem","file":"{\"success\":true,\"payload\":{\"aircraft\":{\"0\":{\"000001\":[null,null,\"CFFAW\",9.95729,-84.1405,9500,90,136,1538140969,null,null,\"2000\",\"2-39710687\",[9.93233,-84.1386,277]],\"000023\":[\"ULAC\",null,\"PH4P4\",

person Freddy    schedule 28.02.2019    source источник
comment
Что отображается в журнале ScrapingHub в строке (~5), содержащей Overridden settings: ? Он показывает 'LOG_ENABLED': False, 'LOG_LEVEL': 'INFO'?   -  person malberts    schedule 28.02.2019
comment
Можешь показать свой scrapy.cfg?   -  person Rafael Almeida    schedule 28.02.2019
comment
спасибо @Rafael: - вот содержимое cfg: [настройки] default = Positions.settings [deploy] #url = localhost:6800 проект = позиции   -  person Freddy    schedule 28.02.2019
comment
спасибо @malberts, он показывает «LOG_ENABLED»: False, «MEMUSAGE_LIMIT_MB»: 950,   -  person Freddy    schedule 28.02.2019
comment
@Freddy На самом деле ваш другой комментарий с выводом журнала тоже был полезен. Поместите это в свой вопрос. Насколько велик один из тех ответов, которые вы поместили в file? Что произойдет, если вы измените свои URL-адреса, чтобы загрузить только 1 элемент?   -  person malberts    schedule 28.02.2019
comment
@malberts: кроме того, если это поможет, я нашел это несколькими строками ниже: «[scrapy.middleware] Включенные конвейеры элементов: []»   -  person Freddy    schedule 28.02.2019
comment
@Freddy Судя по выходным данным вашего журнала, вы достигли предела размера элемента. См. здесь: support.scrapinghub.com/support/discussions/topics/22000009523 и это Часто задаваемые вопросы. Вам нужно сохранить только обязательные поля в этом ответе, а не весь ответ (размер которого превышает 1 МБ). Если вам действительно нужно все это, обратитесь к предложениям в первой ссылке.   -  person malberts    schedule 28.02.2019
comment
@malberts спасибо за ответ, сейчас проверю ссылку. Если он попытается загрузить один раз, произойдет то же самое. и да, размер составляет от 950 байт до 1 МБ.   -  person Freddy    schedule 28.02.2019
comment
@Freddy Я сам этого не делал, но звучит примерно так.   -  person malberts    schedule 28.02.2019


Ответы (1)


Из вашего файла настроек похоже, что для Scrapy нет предопределенного механизма вывода фидов. Странно, что это сработало в первый раз локально (при создании файла .csv).

В любом случае, вот дополнительные строки в settings.py, которые вам нужно добавить для работы Scrapy. Если вы просто хотите передать вывод локально в файл .csv:

# Local .csv version
FEED_URI = 'file://NAME_OF_FILE_PATH.csv'
FEED_FORMAT = 'csv'

Я также использую эту версию для загрузки файла json в корзину S3.

# Remote S3 .json version
AWS_ACCESS_KEY_ID = YOUR_AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY = YOUR_AWS_SECRET_ACCESS_KEY

FEED_URI = 's3://BUCKET_NAME/NAME_OF_FILE_PATH.json'
FEED_FORMAT = 'json'
person Ze Xuan    schedule 09.07.2019