Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- # coding: utf-8
- import argparse #модуль для аргументов командной строки
- import sys # будем юзать пару функций
- import re # модуль для работы с регулярными выражениями
- import os # в модуле есть функции для создание папок
- from urllib.request import urlopen, urlretrieve # для загрузки файлов
- #фунция которая грузит тред и парсит ссылки на пикчи
- def parse_thread(board, thread):
- #формируем полный адрес к нужному треду
- url = ('http://2ch.hk/%s/res/%s.html' % (board, thread))
- #загружаем html код страницы
- data = urlopen(url).read()
- #получаем список ссылок на пикчи при помощи регулярного выражения, гули python re
- links = re.findall('<a target="_blank" href="(.*?)">', str(data))
- #выводим количество найденных пикч
- print('found %s images' % len(links))
- #формируем список с полным адресом для скачивания пикч
- for i, src in enumerate(links):
- links[i] = ('http://2ch.hk' + src)
- return links
- #функция скачивает пикчу и сохраняет
- def download(url, path):
- #выдираем название файла с полного пути для загрузки
- fileName = url.split('/')[-1]
- print(fileName)
- #формируем путь для сохранения с названия папки и файла
- file_path = path + fileName
- #скачиваем пикчу и сохраняем
- urlretrieve(url, file_path)
- #Код начинает работать отсюда!
- if __name__ == "__main__":
- #парсим аргументы командной строки, гугли argparse
- parser = argparse.ArgumentParser(description='Download picture from 2ch')
- parser.add_argument('-b', '--board', type=str, help='board name')
- parser.add_argument('-t', '--thread', type=int, help='thread number')
- options = parser.parse_args()
- #если скрипт запущен без параметров - показываем справку и завершаем работу скрипта
- if len(sys.argv) == 1:
- parser.print_help()
- sys.exit(1)
- #запускаем фунцию parse_thread с параметрами - название доски и номер треда, результат роботы функции будет сохранен в список img_list
- img_list = parse_thread(options.board, options.thread)
- #формируем название папки в которую будем сохранять пикчи
- path = ('/[%s]%s/' % (options.board, options.thread))
- path = os.getcwd() + path
- #проверяем наличие папки с таким названием, если ее нет то создаем
- if not os.path.exists(path):
- os.makedirs(path)
- print('download...')
- #в цикле вызываем функцию download с адресом для загрузки и папкой куда сохранять
- for url in img_list:
- download(url, path)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement