Python «повреждает» загруженный файл PDF - PullRequest
0 голосов
/ 13 сентября 2018

Я пишу программу для автоматической загрузки страницы Википедии в формате PDF с использованием встроенного инструмента.

Мне удалось решить проблему, когда я не смог получить данные с помощью кнопки отправки.Новая проблема заключается в том, что я могу загрузить файл (я использовал open(), а также urllib.request.urlretrieve(), но я не могу открыть его вручную. Кажется, что файл поврежден во время загрузки (я думаю, что этоошибка кодирования.) Это отключает открытие PDF-файла .. (неподдерживаемый тип данных или поврежденный файл =

Это код, который я использую:

import requests
import urllib.request

base_url = 'https://de.wikipedia.org/wiki/'
def createURL(base):
    title = 'Rektifikation (Verfahrenstechnik)'
    name = title.replace(" ", "_")
    url = (base + name).replace('(', '%28').replace(')', '%29')
    print(url)
    getPDF(url, title)

def getPDF(url, title):
    r = requests.get(url, allow_redirects=True)
    open('{}.pdf'.format(title), 'wb').write(r.content)
    urllib.request.urlretrieve('https://de.wikipedia.org/w/index.php?title=Spezial:ElectronPdf&page=Rektifikation+%28Verfahrenstechnik%29&action=show-download-screen)', '{}_vl.pdf'.format(title))

createURL(base_url)

Я жестко закодировал большую часть материала по причинам отладкиНе стесняйтесь помочь мне улучшить код, но учтите, что это не моя основная цель, пожалуйста.

Теперь у меня вопрос: что я могу сделать, чтобы предотвратить повреждение файла (закодируйте егоправильный путь)

Это - ссылка (нажмите кнопку), с которой я пытаюсь скачать. Примечание: Это ссылка для мгновенной загрузки с перенаправлением.

Спасибоесли вам нужна дополнительная информация, просто спросите меня.

РЕДАКТИРОВАТЬ: Открытие PDF через Word позволяет мне видеть, что данные (тексты, абзацы ...) доступны. Таким образом, PDF содержит данныеи сама загрузкакажется успешным.

Размеры загружаемых файлов различаются, может быть, кто-то тоже может посмотреть на эту проблему: open: 58KB urllib: 18KB вручную: 239KB

...