scrapy для общедоступного FTP-сайта с данными аутентификации, получая ошибку FTP

Я пишу паука для общедоступного FTP-сайта с аутентификацией

Я дал логин и пароль для ftp. Scrapy не обработал этот запрос и выдал ошибку «ftp_user»

 # all import stmt
 class my_xml(BaseSpider):
    name = 'my_xml'

    def start_requests(self):
        yield Request(
            url='url',
            meta={'ftp_user': self.ftp_user, 'ftp_password': self.ftp_password}
        )

    def parse(self, response):
        print response.body

Я получаю ошибку, как это.

 2015-04-03 12:46:08+0530 [scrapy] DEBUG: Telnet console listening on 127.0.0.1:6023
 2015-04-03 12:46:08+0530 [scrapy] DEBUG: Web service listening on 127.0.0.1:6080
 2015-04-03 12:46:08+0530 [-] ERROR: Unhandled error in Deferred:
 2015-04-03 12:46:08+0530 [-] Unhandled Error
    Traceback (most recent call last):
      File "C:\Python27\lib\site-packages\scrapy\core\downloader\middleware.py", line 38, in process_request
        return download_func(request=request, spider=spider)
      File "C:\Python27\lib\site-packages\scrapy\core\downloader\__init__.py", line 123, in _enqueue_request
        self._process_queue(spider, slot)
      File "C:\Python27\lib\site-packages\scrapy\core\downloader\__init__.py", line 143, in _process_queue
        dfd = self._download(slot, request, spider)
      File "C:\Python27\lib\site-packages\scrapy\core\downloader\__init__.py", line 154, in _download
        dfd = mustbe_deferred(self.handlers.download_request, request, spider)
    --- <exception caught here> ---
      File "C:\Python27\lib\site-packages\scrapy\utils\defer.py", line 39, in mustbe_deferred
        result = f(*args, **kw)
      File "C:\Python27\lib\site-packages\scrapy\core\downloader\handlers\__init__.py", line 40, in download_request
        return handler(request, spider)
      File "C:\Python27\lib\site-packages\scrapy\core\downloader\handlers\ftp.py", line 72, in download_request
        creator = ClientCreator(reactor, FTPClient, request.meta["ftp_user"],
    exceptions.KeyError: 'ftp_user'

Кто-нибудь может дать решение этой ошибки. ? Если я делаю неправильную процедуру, пожалуйста, предложите мне правильное решение. Как обращаться с этими видами пауков? Обратите внимание, что: URL, ftp_user и ftp_password верны, и в браузере мы можем открыть его с этими данными.


person Mahabaleshwara Adiga    schedule 03.04.2015    source источник
comment
Не могли бы вы изменить свой пример кода? Я вижу, что вы удалили код из своего примера, что привело к неработоспособности кода и заставило людей давать вам решения, которые касаются вашего неработающего кода примера, а не вашей реальной проблемы. Пожалуйста, предоставьте рабочий код, упрощенный и анонимный, но такой, который будет работать, если URL-адреса, пользователей и пароли будут заменены реальными значениями.   -  person Gallaecio    schedule 31.01.2019


Ответы (1)


Попробуйте так:

# -*- coding: utf-8 -*-
import scrapy
from scrapy.http import Request

class my_xml(scrapy.Spider):
    name = 'my_xml'
    ftp_host = 'ftp://127.0.0.1'
    ftp_user = 'your_username'
    ftp_password = 'your_password'

    def start_requests(self):
        yield Request(
            url=self.ftp_host,
            meta={'ftp_user': self.ftp_user, 'ftp_password': self.ftp_password}
        )

    def parse(self, response):
        print response.body
person Andrés Pérez-Albela H.    schedule 19.09.2015