Scrapy загружает PDF-файлы в определенную форму (id), используя FormRequest.from_response - PullRequest
0 голосов
/ 01 декабря 2018

Я пытаюсь загрузить pdf-файлы на веб-сайт (сервер Flask), где идентификаторы форм - это имена файлов

Пример формы с id = 1, поэтому мне нужно загрузить 'arquivos / 1.pdf, я пытаюсь использовать scrapy.FormRequest.from_response, но когда я пытаюсь добавить multipart / form-data в качестве заголовка Content-Type, сервер не найдет или не получит файл.

<title>Upload 1 new File</title>
    <h1>Upload 1 new File</h1>
    <form id=1 action="" method=post enctype=multipart/form-data>
      <p><input type=file name=file>
        <input type=submit value=Upload>
    </form>

Код Scrapy

filename = '../arquivos/%s.pdf' % 1    

with open(filename, mode='rb') as file:
                yield scrapy.FormRequest.from_response(response, formid=1, formdata={'file': file, }, headers={'Content-Type': 'multipart/form-data'})

Фрагмент Flask-сервера

if request.method == 'POST':
        print(request.headers)

        print(request.files['file'])
        file = request.files['file']
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
            return redirect(url_for('index'))

Когда я выполняю паук Scrapy, мой журнал сервера выдает server logs

1 Ответ

0 голосов
/ 05 декабря 2018

Эта функциональность по-прежнему в PR , и я не смог найти ссылки на данные форм из нескольких частей в существующих документах Scrapy, которые соответствуют вашему опыту.

Не стесняйтесь голосоватьдля этой проблемы, но в противном случае вам нужно будет сгенерировать запрос вручную, при условии, что Scrapy позволит разместить «необработанное» тело запроса: - (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...