Публикация (выгрузка) изображения в Instagram с использованием Selenium без API - PullRequest
0 голосов
/ 18 октября 2018

Справочная информация:

Я пытался решить эту проблему некоторое время.Я использую Selenium (Chrome WebDriver) для доступа к мобильной версии Instagram с рабочего стола.Моя цель - создать скрипт для автоматической отправки изображения в аккаунт.Используя Python, я автоматизировал все до той части, где мне нужно выбрать файл.

Проблема:

После того, как я нажму кнопку «Создать новое сообщение», откроется селектор файлов графического интерфейса, и я не могу понять,как с ним взаимодействовать, чтобы выбрать файл.

Пробовал:

post_btn.send_keys (r '/ Path / To / image.jpg')

post_btn.send_keys ('/Path/To/image.jpg')

Я думаю, проблема этого метода в том, что нет поля ввода для отправки строки.

Я читал некоторые другие сообщения ос помощью autoit и это работает, но я на Mac.

Вот диапазон, в котором живет кнопка «почта»:

<span class="glyphsSpriteNew_post__outline__24__grey_9 u-__7" aria-label="New Post"></span>

Вопрос:

Есть ли способ«открыть» (загрузить) файл через графический интерфейс выбора файлов с помощью Python?Лучше, я могу вообще обойти открытие селектора файлов?

Спасибо!

Редактировать:

Я думаю, что мешает мне решить эту проблему, так это то, что я не понимаю, какданные отправляются и принимаются.Поскольку это не ввод HTML, значит ли это, что это JSON?Как выяснить, как данные (изображение) отправляются на следующую страницу (https://www.instagram.com/create/style/)?

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Вы можете использовать Instagram API для загрузки изображения / видео.

Установка InstagramApi

pip install InstagramApi

Тестовый вход

from InstagramAPI import InstagramAPI

api = InstagramAPI("username", "password")
if (api.login()):
    api.getSelfUserFeed()  # get self user feed
    print(api.LastJson)  # print last response JSON
    print("Login succes!")
else:
print("Can't login!")

Загрузить изображение с подписью:

from InstagramAPI import InstagramAPI

InstagramAPI = InstagramAPI("login", "password")
InstagramAPI.login()  # login

photo_path = '/path/to/photo.jpg'
caption = "Sample photo"
InstagramAPI.uploadPhoto(photo_path, caption=caption)

Загрузить видео:

from InstagramAPI import InstagramAPI
import urllib

video_url = 'https://instagram.fmad3-2.fna.fbcdn.net/t50.2886-16/17157217_1660580944235536_866261046376005632_n.mp4'  # a valid instagram video
video_local_path = video_url.split("/")[-1]
thumbnail_url = "https://instagram.fmad3-2.fna.fbcdn.net/t51.2885-15/e15/17075853_1759410394387536_3927726791665385472_n.jpg"
thumbnail_local_path = thumbnail_url.split("/")[-1]

urllib.urlretrieve(video_url, video_local_path)
urllib.urlretrieve(thumbnail_url, thumbnail_local_path)

InstagramAPI = InstagramAPI("login", "password")
InstagramAPI.login()  # login
InstagramAPI.uploadVideo(video_local_path, thumbnail_local_path, caption="Tortuguero")

(Необязательно) Загрузите репозиторий github с хорошими примерами.

git clone https://github.com/LevPasha/Instagram-API-python.git

Откройте папку примеров

cd Instagram-API-python/examples

Отредактируйте файлы: замените login и password на имя пользователя и пароль.Запустите файл

0 голосов
/ 18 октября 2018

Я попробовал это на своем конце, и я ясно вижу, что нет способа обойти селектор файлов.При этом вам нужно использовать внешний инструмент для автоматизации выбора файлов.По моему опыту Sikuli лучше всего подходит для этой работы.

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