14 / 13 / 5
Регистрация: 24.02.2011
Сообщений: 714

Парсинг стилей для поиска и скачивания фоновых изображений

29.05.2015, 11:33. Показов 1327. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
накидал функцию для скачки изображений из веба:

Python
1
2
3
4
5
6
7
8
9
10
def save_img( URL = '' ):
    if ( URL == '' ):   return False
    file = os.path.split(URL)[1]
    
    try: 
        with urllib.request.urlopen(URL) as data, open( file, 'wb') as fout:
            fout.write(data.read())         
        return True
    except Exception:
        return False
Накидал парсер CSS файла, который находит в нем все ссылки на изображения (бекграунды) и качает их, подменяя ссылку на локальную...

Запустил парсер, нашлось около 1500 ссылок.
Он начал работать и качать гифки размером по 1 - 2 кб. (это вообще копейки)
Но на скачку одной картинки у него уходит около 4 секунд. - слишком долго для файлов таких размеров...

Вопрос: Это нормально?
Есть реализации этой проблемы быстрее?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.05.2015, 11:33
Ответы с готовыми решениями:

Программа для вопросов, тестов, списков, фоновых изображений. Нужен ли в программе калькулятор?
Создатель - Волобуев Илья Евгеньевич. Программа умеет: 1. Создавать: вопросы тесты списки фоновые изображения 2. Удалять: ...

ресайз фоновых изображений
здравствуйте товарищи! есть вопрос над которым неделю мучаюсь: есть несколько фоновых изображений которые очень нужно изменить...

Генерация фоновых изображений
Доброго времени суток. Стоит задача, описанная ниже, но, к сожалению, раньше не приходилось как-либо взаимодействовать настолько глубоко с...

11
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
29.05.2015, 11:46
lavrik, Скорее всего виноват канал или сервер с которого качаешь находится в какой-то "дали".
Я вот качалку музыки с вк, все качается более чем быстро.
0
14 / 13 / 5
Регистрация: 24.02.2011
Сообщений: 714
29.05.2015, 11:48  [ТС]
Цитата Сообщение от alex925 Посмотреть сообщение
lavrik, Скорее всего виноват канал или сервер с которого качаешь находится в какой-то "дали".
Я вот качалку музыки с вк, все качается более чем быстро.
поделись скриптом для скачки музыки из ВК!!!
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
29.05.2015, 12:09
lavrik, Я его менял и сейчас он не на той стадии, чтобы его куда-то выкладывать.
0
14 / 13 / 5
Регистрация: 24.02.2011
Сообщений: 714
29.05.2015, 12:13  [ТС]
ладно... вернусь к своим баранам...
Возникла мысль насчет многопоточности.

Сам я питоном занимаюсь только неделю, и о многопоточности ещё не слыхал, но знаю что такая возможность есть.

Это возможно осуществить (переделать функцию чтоб она качала в несколько потоков)
Если да, то поделитесь пжлст ссылочкой или советом)))
0
 Аватар для t1m0n
638 / 416 / 27
Регистрация: 03.11.2009
Сообщений: 1,855
31.05.2015, 18:27
из найденого когда то в инете

скачать файл прямо на диск

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import requests
 
with open(os.path.join(savepath(out_file_name)), 'wb') as out_stream:
    req = requests.get(download_url + out_file_name, stream=True)
    for chunk in req.iter_content(1024):  # Куски по 1 КБ
        out_stream.write(chunk)
        
    
nbytes = 100 # читаем по 100 байт
with open(os.path.join(savepath(out_file_name)), 'wb') as out_stream,\
     urllib2.urlopen(download_url + out_file_name) as in_stream:
    while True:
        chunk = in_stream.read(nbytes)
        if chunk == '':
            break
        out_stream.write(chunk)
0
196 / 197 / 120
Регистрация: 27.05.2011
Сообщений: 545
01.06.2015, 19:29

Не по теме:

Цитата Сообщение от lavrik Посмотреть сообщение
поделись скриптом для скачки музыки из ВК!!!
Берёшь с помощью savefrom'а получаешь список в формате m3u, затем запускаешь с параметром — имя файла-списка.
Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/python3
import sys, urllib.request
m3u = open(sys.argv[1])
line = "start"
while line:
    line = m3u.readline()
    if line.startswith('#EXTINF:'):
        name = line[ len("#EXTINF:-1,") : -1 ] + ".mp3"
        # убирает символы, запрещённые в ФС
        name = name.replace("/", "")
        url = m3u.readline()
        print(name, url)
        open(name, "wb").write(urllib.request.urlopen(url).read())

Проверок на ошибки нету

⁠⁠⁠⁠⁠
0
01.06.2015, 20:15

Не по теме:

mymedia, для таких целей лучше использовать wget.

0
01.06.2015, 20:19

Не по теме:

Zuzik, а wget понимает m3u? Просто я не хотел парсить m3u на bash'е, т.к. со строками он работает как-то недетерминированно. По крайней мере для меня.

0
01.06.2015, 20:22

Не по теме:

mymedia, ему нужно скормить файлик с урлами закачиваемых файлов, каждый файл с новой строки. Он их возьмет и скачает, и довольно надежно. Расширение тут врятле роль сыграет.

0
01.06.2015, 20:26

Не по теме:

Zuzik, тогда у всех файлов, скаченных таким образом, не будет нормального названия. А мне ещё хотелось, чтобы имена файлов были в виде: исполнителькомпозиция

0
01.06.2015, 20:42

Не по теме:

mymedia, ещё это способ больше одноразовый, постоянно так замучаешься делать + не спортивно

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.06.2015, 20:42
Помогаю со студенческими работами здесь

Позиционирование фоновых изображений
Здравствуйте. Вот адаптирую страничку. Фон состоит из нескольких изображений. background-image: url("img/left.png"),...

Цикл слайда фоновых изображений
Я сделал скрипт, который изменяет каждые 10 секунд картинку на другую и ходит по циклу. Но я сделал это через CSS3 что очень нагружает...

Программа для скачивания изображений из личных сообщений сайта deviantart
Доброго времени суток. Многие прекрасно знают данный сайт, и что он из себя представляет. На этом сайте имеется аккаунт, подписан на...

Как найти адреса фоновых изображений?
народ, кто сейчас с компа? помогите найти ссылки на картинки фона для шапки и подвала, на сайте http://www.calendar.by, вверху новодняя...

Утилита для поиска неиспользуемых в проекте изображений
Собственно есть ли что то подобное, что бы список составило или даже сразу всё нефигурируемое в коде поудаляло?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru