Member 13355404 Ответов: 1

Код Python для загрузки и объединения pdf-файлов в цикле приводит к конечному файлу размером 1 КБ


Всем привет.
У меня есть сайт, с которого мне нужно получить ~1000 PDF-файлов. PDF-файлы отличаются четырехзначным числом в диапазоне 1101-2300, например
https://intvd.gib.gov.tr/2014_Emlak_Arsa/EmlakServlet?tip=9& ilKodu=3& ilceKodu=1101
Однако некоторые числа между диапазонами не назначены pdf-файлу, поэтому мне нужно было что-то, что было бы
1-) скачать все файлы
2 -) Удалите PDF-файлы размером 1 КБ (это не назначенные файлы)
3 -) объединить все pdf-файлы в один pdf-файл
Были ответы на каждый из этих шагов, но не вместе, поэтому я посмотрел на них и сделал что-то. Однако в конце концов все, что я получаю, - это pdf-файл размером 1 КБ под названием merged_full. pdf
Что я делаю не так?
Овации

Что я уже пробовал:

import urllib.request
import os
from PyPDF2 import PdfFileReader, PdfFileMerger

os.chdir('the_directory')

mylist=(list(range(1101,2500)))

for i in mylist:
    def download_file(download_url):
        web_file = urllib.request.urlopen('https://intvd.gib.gov.tr/2014_Emlak_Arsa/EmlakServlet?tip=9&ilKodu=3&ilceKodu=%d'%(i),'%d.pdf'%(i))
        local_file = open('%d.pdf'%(i), 'wb')
        local_file.write(web_file.read())
        web_file.close()
        local_file.close()
        filesize = os.path.getsize('%d.pdf'%(i))
        if filesize<1024:
                os.remove('%d.pdf'%(i))
        del filesize

files_dir = "the_directory"
pdf_files = [f for f in os.listdir(files_dir) if f.endswith("pdf")]
merger = PdfFileMerger()

for filename in pdf_files:
    merger.append(PdfFileReader(os.path.join(files_dir, filename), "rb"))

merger.write(os.path.join(files_dir, "merged_full.pdf"))

1 Ответов

Рейтинг:
0

Jochen Arndt

Размер 1 КБ указывает на то, что созданный файл является просто пустым PDF-файлом.

Вы должны вставить проверки в свой код, чтобы увидеть, работает ли каждый шаг так, как ожидалось:

Загружены ли файлы?
Какие размеры имеет существующий файл?
Документы, перечисленные в pdf_files?
Читает ли PdfFileReader() файлы?
Прилагается ли контент к слиянию?

Согласно PdfFileMerger документация не должно быть никакой необходимости использовать считыватель. Просто пройдите путь к append функция (создание уже объекта stream здесь):

merger.append(file(os.path.join(files_dir, filename), 'rb'))