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

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

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

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

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

Непосредственно сам код:
main.py:
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:
login_pin = "your login"
pass_pin = "your pass"
 
Начинающий
Статус
Оффлайн
Регистрация
27 Авг 2018
Сообщения
27
Реакции[?]
0
Поинты[?]
0
Видел и сам писал это чудо по туториалу примерно с пол года назад. Если не ошибаюсь pythoToday туториал делал. А в общем спасибо
 
https://qweme.dev
Пользователь
Статус
Оффлайн
Регистрация
25 Май 2022
Сообщения
165
Реакции[?]
87
Поинты[?]
21K
Alles Halli-Hallo, захотел написать бота для тг, который отправляет картинки котов. Решил написать парсер картинок, чтобы они скачивались фоново, при работе бота. Как только дело было сделано, то решил воспользоваться Heroku, но столкнулся с проблемой, что приложение может весить ограниченное количество мегабайт, поэтому идея с парсером отпала и я решил скинуть сюда, может быть кому-нибудь понадобится.

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

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

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

Непосредственно сам код:
main.py:
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:
login_pin = "your login"
pass_pin = "your pass"
можно не качать эти картинки, а собирать их url в условно imgs.json и при нажаити по кнопочке в тг открывать этот джсон и рандомом отдавать линк на пикчу в тг можно слать картинки ссылкой ну и дело в шляпе и места у тебя не будет занимать
 
Начинающий
Статус
Оффлайн
Регистрация
21 Мар 2021
Сообщения
94
Реакции[?]
29
Поинты[?]
7K
Неужели, хоть кто-то пишет нормальный код.
Полезная штука, спасибо.
 
Легенда форума
Статус
Оффлайн
Регистрация
10 Дек 2018
Сообщения
4,379
Реакции[?]
2,284
Поинты[?]
189K
Я сначала подумал, что Unpinterested больше не нужен, но здесь нужен логин и пароль, бля.

Лайк энивей.
 
Начинающий
Статус
Оффлайн
Регистрация
28 Окт 2021
Сообщения
2
Реакции[?]
5
Поинты[?]
0
можно не качать эти картинки, а собирать их url в условно imgs.json и при нажаити по кнопочке в тг открывать этот джсон и рандомом отдавать линк на пикчу в тг можно слать картинки ссылкой ну и дело в шляпе и места у тебя не будет занимать
Спасибо за совет, наверное так и сделаю
 
Участник
Статус
Оффлайн
Регистрация
26 Июн 2020
Сообщения
1,114
Реакции[?]
210
Поинты[?]
8K
Никто и не шутил
Сначала Доберёмся до нейминга, logs.py это логи или все таки модуль конфиг, так же, импорт всего через *,думаю не стоит говорить к чему это приводит. После бесполезная переменная login_button. Использование time.sleep вместо встроенной функции селенки WebDriverWait. Это уже говорит о мастерском владении либой.
у чела код ни одного варна не выдает, респект ему.
Ещё бы были бы варны в скрипте <100 строк
 
Начинающий
Статус
Оффлайн
Регистрация
18 Дек 2021
Сообщения
47
Реакции[?]
1
Поинты[?]
0
Сначала Доберёмся до нейминга, logs.py это логи или все таки модуль конфиг, так же, импорт всего через *,думаю не стоит говорить к чему это приводит. После бесполезная переменная login_button. Использование time.sleep вместо встроенной функции селенки WebDriverWait. Это уже говорит о мастерском владении либой.

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