Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 29.03.2017
Сообщений: 188

Фильтр скачанных pdf

20.04.2020, 20:38. Показов 1478. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
вот скрипт:
Python
1
2
3
4
5
6
7
8
9
import urllib.request
scn_amount = 3
page_amount = 10
for scn in range (0, scn_amount + 1):
    for current_page in range (0, page_amount + 1):
        current_page_formated = (4 - len(str(current_page))) * '0' + str(current_page)
        scn_formatted = (4 - len(str(scn))) * '0' + str(scn)
        url = "http://www.studentlibrary.ru/cgi-bin/mb4x?usr_data=gd-image(doc,ISBN9785804105694-SCN"+scn_formatted+","+current_page_formated+".pdf,-1,,00000000,5001343be31662a586a453csnackes)&hide_Cookie=yes"
        urllib.request.urlretrieve(url, "глава "+str(scn)+" страница "+str(current_page)+".pdf")
дело в том, что если неправильно ввести url, то скачивается пустая страница. а это явление частое, если не постоянное. например, может быть в цикле scn = 1 и page = 10, но в первой главе 10 страницы нет, поэтому и скачивается пустой pdf. зато во второй главе есть 10 страница, поэтому ее нужно указать во внутреннем цикле. собственно вопрос:можно ли как-то отсеивать или сразу удалять пустые pdf? или может быть есть другой способ - без циклов? или с циклами, но как-то по-другому, чтобы решить эту задачу?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.04.2020, 20:38
Ответы с готовыми решениями:

Фильтр столбцов при переносе данных из DataGridView в PDF
Доброго времени суток! Такой вопрос, у меня есть программа которая берет excel файл и выводит данные в datagridview. Фильтр для отображения...

Подключение скачанных библиотек
Чтобы подключить те библиотеки которые скачал нужно их в папку с программой кинуть? (Вопрос достаточно глупый, но спросить было надо...)

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

7
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
20.04.2020, 21:08
Используйте requests. Там можно и размер ответа проверить: у пустого pdf он будет равен нулю, и status_code и т.д.
Либо читайте доки по urllib и не используйте urlretrieve, который ничего полезного не дает.
0
1 / 1 / 0
Регистрация: 29.03.2017
Сообщений: 188
20.04.2020, 21:15  [ТС]
а чем заменить urlretrieve?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
20.04.2020, 21:19
Цитата Сообщение от Garry Galler Посмотреть сообщение
читайте доки по urllib

Python
1
2
3
4
5
6
>>> import urllib.request
>>> import urllib.parse
>>> params = urllib.parse.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
>>> url = "http://www.musi-cal.com/cgi-bin/query?%s" % params
>>> with urllib.request.urlopen(url) as f:
...     print(f.read().decode('utf-8'))
Добавлено через 1 минуту
Только этой библиотекой мало кто пользуется. Стандарт это внешняя библиотека requests.
0
1 / 1 / 0
Регистрация: 29.03.2017
Сообщений: 188
20.04.2020, 21:26  [ТС]
вот через requests сделал
Python
1
2
3
4
5
6
7
8
9
10
11
import requests
scn_amount = 3
page_amount = 10
for scn in range (0, scn_amount + 1):
    for current_page in range (0, page_amount + 1):
        current_page_formated = (4 - len(str(current_page))) * '0' + str(current_page)
        scn_formatted = (4 - len(str(scn))) * '0' + str(scn)
        url = "http://www.studentlibrary.ru/cgi-bin/mb4x?usr_data=gd-image(doc,ISBN9785804105694-SCN"+scn_formatted+","+current_page_formated+".pdf,-1,,00000000,5001343be31662a586a453csnackes)&hide_Cookie=yes"
        r = requests.get(url)
        with open("глава "+str(scn)+" страница "+str(current_page)+".pdf", "wb") as code:
            code.write(r.content)
подскажите, как реализовать, чтобы размер ответа проверялся?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
20.04.2020, 21:31
Для начала проверяйте что r.status_code == 200. Потом что len(r.content) > 0.
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
20.04.2020, 22:06
Лучший ответ Сообщение было отмечено Земля_я_Юпитер как решение

Решение

этот сайт при неправильном запросе возвращает 200 и домашнюю страницу. предлагаю проверять content-type

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import requests
 
scn_amount = 3
page_amount = 10
 
session = requests.Session()
 
for scn in range (scn_amount + 1):
    for page in range (page_amount + 1):
        p = "{:04d}".format(page)
        s = "{:04d}".format(scn)
 
        print("checking", p, s)
 
        url_template = "http://www.studentlibrary.ru/cgi-bin/mb4x?usr_data=gd-image(doc,ISBN9785804105694-SCN{},{}.pdf,-1,,00000000,5001343be31662a586a453csnackes)&hide_Cookie=yes"
        url = url_template.format(s, p)
        
        resp = session.get(url)
        if resp.status_code == 200:
            content_type = resp.headers.get('Content-Type', '')
 
            if 'pdf' in content_type:
                fn = "глава {} страница {}.pdf".format(s, p)
                print('writing', fn)
                with open(fn, 'wb') as data:
                    data.write(resp.content)
1
1 / 1 / 0
Регистрация: 29.03.2017
Сообщений: 188
20.04.2020, 22:22  [ТС]
Jabbson, спасибо большое, заработало!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.04.2020, 22:22
Помогаю со студенческими работами здесь

Метка для скачанных файлов
Всем доброго дня, даже не знаю как сформулировать этот вопрос что бы загуглить :) В общем, есть таблицы: files и users В files -...

Блокировка скачанных документов *.doc(x)
Скачанные документы Office блокируются брендмауером как "скачанные не пойми откуда" и поэтому не безопасные. Полюркал - проблема была...

Установка скачанных прог в убунту
В данный момент не могу установить файл eset_nod32av_32bit_ru.linux. Но существуют еще и форматы .sh, .run, .deb, .bin, .install. Способ:...

Блокировка файлов, скачанных из интернета
Раньше, когда я запускал ехе-файл, скачанный из интернета, выдавалось предупреждение, что файл был заблокирован, и тут же предлагалось его...

Не отображаются иконки скачанных изображений
Когда я скачиваю изображения в google chrome иконки не появляются на рабочем столе если не обновить рабочий стол,в firefox такой проблемы...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru