@35000sobak

Как отправить фото на сайт через форму и возвратить ссылку?

На сайте есть форма загрузки изображения, после загрузки изображения выводится ссылка на скачивание(а именно в теге form появляется атрибут):

<form method="GET" id="file_link" action="/output/20200702125307337580.jpg">

Я пытаюсь загрузить изображение через requests и после чего получить содержимое атрибута action, но в итоге получаю None, в чем может быть дело? Сам код:

url = 'http://color.photofuneditor.com/ceremony'
        link_img[user_id] = src
        data = {'name': 'file', 'type': 'submit'}
        files = {'file': (link_img[user_id], open(link_img[user_id], 'rb'))}
        req = requests.get(url, data=data, files=files)
        if req.ok:
            bot.send_message(message.chat.id, "Ждем 15с")
            time.sleep(15)
            img = requests.get('http://color.photofuneditor.com/ceremony')
            soup = BeautifulSoup(img.text, "lxml")
            img_p = soup.find('form', {'id': 'file_link'})
            print(img_p.get('action')) #выводит None
  • Вопрос задан
  • 511 просмотров
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Оно и не должно там появится.

POST на color.photofuneditor.com/ceremony-vegas
Параметр fileToUpload
Содержание параметра - base64 картинки
Ответ - название нового файла

import requests
import base64


with open("nums.jpeg", "rb") as image_file:
    image_hash = base64.b64encode(image_file.read()).decode("utf-8")

encoded_image = 'data:image/jpeg;base64,{}'.format(image_hash)
payload = {'fileToUpload': encoded_image}

r = requests.post('http://color.photofuneditor.com/ceremony-vegas', data=payload)

if r.status_code == 200:
    image_url = 'http://color.photofuneditor.com/output/{}'.format(r.json()['file_link'])
    r = requests.get(image_url)

    with open('new_image.jpg', 'wb') as f:
        f.write(r.content)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы