AB10000001 Опубликовано 18 февраля, 2019 Жалоба Поделиться Опубликовано 18 февраля, 2019 (изменено) Всем привет!В данной статье я покажу как написать программу для поиска фотографий на сайте i.imgur.Написал прототип я достаточно давно, но набравшись сил, умений и ума я напишу 2 версию, которая поможет новичкам-хацкерам Python'а. Существует портал i.imgur.com, который является фото-хостингом.Рассмотрим вид ссылок на изображения сайтаhttps://i.imgur.com/cN5i5qJ.jpg - интересный комиксhttps://i.imgur.com/eUQbLMb.jpg - еще что-то.Дело в том, что первая часть ссылки на сайт(курсив) всегда одинаковый.А приставка формата изображения(жирный) уточняет, что именно мы ищем.На основе этих знаний пишем программу:import requests #Эта строка нужна для дальнейшего считывания и скачивания файловimport random # Ну это понятно with open("ALL.txt", "r") as backfile:#Мы считаем сколько строк есть в файле "ALL.txt", который имеет 2 пустые строки lines = backfile.readlines() cv = len(lines) a = cv - 2 aa = a + 1def ImgurStart(): global aa siteName = "https://i.imgur.com/" print("print format you want to use")#спрашиваем, какой формат нам нужен Format = input() print("_"*20) Format = "." + Format#соединяем ProvFile = "https://i.imgur.com/LPZb2u2" + Format PR = requests.get(ProvFile) PR2 = PR.content'''Вот тут нам и нужен requests. Дело в том, что если зайти на несуществующее изображение, то мы увидим это:. Чтобы не скачивать такие изображения мы сделаем так: получим значение этого фото и если оно совпадает с тем, что мы нашли, что мы парсим - не скачивать изображение ''' A = False print(siteName, "has been started with", Format) print("_"*20) print('\n'*5) while A != True: b = str(aa) File = b + Format Num = random.choice("QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890") Num2 = random.choice("QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890") Num3 = random.choice("QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890") Num4 = random.choice("QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890") Num5 = random.choice("QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890") Num6 = random.choice("QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890") Num7 = random.choice("QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890")Name = siteName + Num + Num2+ Num3 + Num4 + Num5 + Num6 + Num7 + Format#Создаем ссылку на изображение, что будем проверять Lol = requests.get(Name)#Получаем значение этого фото с на строку выше созданной ссылки Lol2 = Lol.content if Lol2 == PR2:#Сравнение неправильной ссылки и той, которую сделали только-что #Не делаем ничего else: Naydi = open("ALL.txt", "a")#а если разные, то скачиваем фото и пишем в программу LName = Name + "\n" Naydi.write(LName) Naydi.close(); print(Name) print("Exist")#Пишем в окно f = open(File, "wb") ufr = requests.get(LName)#сохраняем Фоточку f.write(ufr.content) f.close(); aa = aa + 1 ImgurStart();#Ну и запускаем программу За время написания темы я чуть не уссался получил несколько фото которые можно скачать по этой ссылке:http://fex.net/zip/104683529990/0Ну а саму программу в exe-файле( который будет легче скачать, чем пайтон а потом скопипастить) тут:https://fex.net/zip/468662213902/0 Унимание:Не удаляйте блокнот, который идет вместе с файлом exe/py. Без него происходит ошибка, которую мы пофиксим в следующей версии программы Изменено 18 февраля, 2019 пользователем Rescor 5irFant0ma5 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
root Опубликовано 18 февраля, 2019 Жалоба Поделиться Опубликовано 18 февраля, 2019 Num = random.choice("QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890")Гениально. Rescor 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
AB10000001 Опубликовано 18 февраля, 2019 Автор Жалоба Поделиться Опубликовано 18 февраля, 2019 А собственно, что не так? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
root Опубликовано 18 февраля, 2019 Жалоба Поделиться Опубликовано 18 февраля, 2019 А собственно, что не так? import random import string random_name = lambda length: ''.join(random.sample(string.letters+string.digits, length)) print random_name(8) Rescor 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
AB10000001 Опубликовано 18 февраля, 2019 Автор Жалоба Поделиться Опубликовано 18 февраля, 2019 Да, но данная тема была написана для новичков с предельно простыми объяснениями. Хотя более профессиональной и красивой была-бы твоя Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
5irFant0ma5 Опубликовано 10 сентября, 2019 Жалоба Поделиться Опубликовано 10 сентября, 2019 А слабо написать парсер фоток для ВК? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.