• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

Исходник Парсер картинок с пинтереста

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
28 Окт 2021
Сообщения
2
Реакции
5
Alles Halli-Hallo, захотел написать бота для тг, который отправляет картинки котов. Решил написать парсер картинок, чтобы они скачивались фоново, при работе бота. Как только дело было сделано, то решил воспользоваться Heroku, но столкнулся с проблемой, что приложение может весить ограниченное количество мегабайт, поэтому идея с парсером отпала и я решил скинуть сюда, может быть кому-нибудь понадобится.

Теперь немного про настройки парсера для тех, кто не разбирается в яп, но, может быть, хотел бы воспользоваться:
Для удобства буду указывать расположение тех или иных вещей с помощью номера строки в основном файле:
1. Поддерживает только авторизацию через аккаунт пинтереста;
2. Для работы необходимо предварительно установить chromedriver - версию вашего браузера Chrome (
Пожалуйста, авторизуйтесь для просмотра ссылки.
);
2.1 После установки драйвера, нужно указать абсолютный путь до файла с расширением .exe на месте "path" (на 11 строчке):
EWTY1Xk.png

3. В дополнительном файле, который будет называться logs.py, необходимо указать логин и пароль, которые, соответственно, будут иметь названия для переменных "login_pin" и "pass_pin":
WOwJe3P.png

4. Необходимо указать ссылку на страницу, с которой вы хотите парсить картинки (на 8 строчке):
vdC9TFB.png

Непосредственно сам код:
main.py:
Expand Collapse Copy
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from logs import *


# Link
url = "your link"

# Absolute path to chromedriver.exe
driver = webdriver.Chrome(executable_path="path")

try:
    driver.get(url)
    time.sleep(5)
    login_button = driver.find_element(By.XPATH, "//div[@data-test-id='login-button']").click()
    time.sleep(3)

    # **Sing Up without google or facebook account**

    email_input = driver.find_element(By.XPATH, "//input[@autocomplete='email']")
    email_input.clear()
    email_input.send_keys(login_pin)
    time.sleep(5)

    pass_input = driver.find_element(By.XPATH, "//input[@autocomplete='new-password']")
    pass_input.clear()
    pass_input.send_keys(pass_pin)
    time.sleep(5)

    sing_up_button = driver.find_element(By.CLASS_NAME, "SignupButton").click()
    time.sleep(5)

    for i in range(0, 20):
        non_pin_images = driver.find_elements(By.XPATH, "//div[@data-test-id='non-story-pin-image']")
        non_pin_images[i].click()
        print('Картинка открыта')
        time.sleep(5)
        try:
            other_button = driver.find_element(By.XPATH, "//div[@data-test-id='closeup-more-options']").click()
            print('Другие варианты открыты')
            time.sleep(3.5)
            download_button = driver.find_element(By.XPATH, "//div[@data-test-id='pin-action-dropdown-download']").click()
            time.sleep(3.5)
            print(f'Изображение номер {i} успешно загрузилось')
            driver.back()
            time.sleep(5)
        except Exception as ex:
            print(ex)
        finally:
            continue
    print('Все картинки скачаны')

    # ////////////////////////////////////////

    time.sleep(15)


except Exception as ex:
    print(ex)
finally:
    driver.close()
    driver.quit()

logs.py:
Expand Collapse Copy
login_pin = "your login"
pass_pin = "your pass"
 
Видел и сам писал это чудо по туториалу примерно с пол года назад. Если не ошибаюсь pythoToday туториал делал. А в общем спасибо
 
нахуя тебе картинки котов?
 
Alles Halli-Hallo, захотел написать бота для тг, который отправляет картинки котов. Решил написать парсер картинок, чтобы они скачивались фоново, при работе бота. Как только дело было сделано, то решил воспользоваться Heroku, но столкнулся с проблемой, что приложение может весить ограниченное количество мегабайт, поэтому идея с парсером отпала и я решил скинуть сюда, может быть кому-нибудь понадобится.

Теперь немного про настройки парсера для тех, кто не разбирается в яп, но, может быть, хотел бы воспользоваться:
Для удобства буду указывать расположение тех или иных вещей с помощью номера строки в основном файле:
1. Поддерживает только авторизацию через аккаунт пинтереста;
2. Для работы необходимо предварительно установить chromedriver - версию вашего браузера Chrome (
Пожалуйста, авторизуйтесь для просмотра ссылки.
);
2.1 После установки драйвера, нужно указать абсолютный путь до файла с расширением .exe на месте "path" (на 11 строчке):
EWTY1Xk.png

3. В дополнительном файле, который будет называться logs.py, необходимо указать логин и пароль, которые, соответственно, будут иметь названия для переменных "login_pin" и "pass_pin":
WOwJe3P.png

4. Необходимо указать ссылку на страницу, с которой вы хотите парсить картинки (на 8 строчке):
vdC9TFB.png

Непосредственно сам код:
main.py:
Expand Collapse Copy
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from logs import *


# Link
url = "your link"

# Absolute path to chromedriver.exe
driver = webdriver.Chrome(executable_path="path")

try:
    driver.get(url)
    time.sleep(5)
    login_button = driver.find_element(By.XPATH, "//div[@data-test-id='login-button']").click()
    time.sleep(3)

    # **Sing Up without google or facebook account**

    email_input = driver.find_element(By.XPATH, "//input[@autocomplete='email']")
    email_input.clear()
    email_input.send_keys(login_pin)
    time.sleep(5)

    pass_input = driver.find_element(By.XPATH, "//input[@autocomplete='new-password']")
    pass_input.clear()
    pass_input.send_keys(pass_pin)
    time.sleep(5)

    sing_up_button = driver.find_element(By.CLASS_NAME, "SignupButton").click()
    time.sleep(5)

    for i in range(0, 20):
        non_pin_images = driver.find_elements(By.XPATH, "//div[@data-test-id='non-story-pin-image']")
        non_pin_images[i].click()
        print('Картинка открыта')
        time.sleep(5)
        try:
            other_button = driver.find_element(By.XPATH, "//div[@data-test-id='closeup-more-options']").click()
            print('Другие варианты открыты')
            time.sleep(3.5)
            download_button = driver.find_element(By.XPATH, "//div[@data-test-id='pin-action-dropdown-download']").click()
            time.sleep(3.5)
            print(f'Изображение номер {i} успешно загрузилось')
            driver.back()
            time.sleep(5)
        except Exception as ex:
            print(ex)
        finally:
            continue
    print('Все картинки скачаны')

    # ////////////////////////////////////////

    time.sleep(15)


except Exception as ex:
    print(ex)
finally:
    driver.close()
    driver.quit()

logs.py:
Expand Collapse Copy
login_pin = "your login"
pass_pin = "your pass"
можно не качать эти картинки, а собирать их url в условно imgs.json и при нажаити по кнопочке в тг открывать этот джсон и рандомом отдавать линк на пикчу в тг можно слать картинки ссылкой ну и дело в шляпе и места у тебя не будет занимать
 
Неужели, хоть кто-то пишет нормальный код.
Полезная штука, спасибо.
 
Я сначала подумал, что Unpinterested больше не нужен, но здесь нужен логин и пароль, бля.

Лайк энивей.
 
можно не качать эти картинки, а собирать их url в условно imgs.json и при нажаити по кнопочке в тг открывать этот джсон и рандомом отдавать линк на пикчу в тг можно слать картинки ссылкой ну и дело в шляпе и места у тебя не будет занимать
Спасибо за совет, наверное так и сделаю
 
Никто и не шутил
Сначала Доберёмся до нейминга, logs.py это логи или все таки модуль конфиг, так же, импорт всего через *,думаю не стоит говорить к чему это приводит. После бесполезная переменная login_button. Использование time.sleep вместо встроенной функции селенки WebDriverWait. Это уже говорит о мастерском владении либой.
у чела код ни одного варна не выдает, респект ему.
Ещё бы были бы варны в скрипте <100 строк
 
Сначала Доберёмся до нейминга, logs.py это логи или все таки модуль конфиг, так же, импорт всего через *,думаю не стоит говорить к чему это приводит. После бесполезная переменная login_button. Использование time.sleep вместо встроенной функции селенки WebDriverWait. Это уже говорит о мастерском владении либой.

Ещё бы были бы варны в скрипте <100 строк
могу 100 варнов в 10 строк сделать если надо
 
Назад
Сверху Снизу