Удачи ... :)

аюсь создать pdf-пулер с веб-сайта Австралийской фондовой биржи, который позволит мне просматривать все «объявления», сделанные компаниями, и искать ключевые слова в pdf-файлах этих объявлений.

До сих пор я использую запросы и PyPDF2, чтобы получить файл PDF, записать его на свой диск и затем прочитать. Тем не менее, я хочу иметь возможность пропустить этап записи файла PDF на мой диск и чтения его, и перейти от получения файла PDF к преобразованию его в строку. То, что я до сих пор это:

import requests, PyPDF2

url = 'http://www.asx.com.au/asxpdf/20171108/pdf/43p1l61zf2yct8.pdf'
response = requests.get(url)
my_raw_data = response.content

with open("my_pdf.pdf", 'wb') as my_data:
    my_data.write(my_raw_data)


open_pdf_file = open("my_pdf.pdf", 'rb')
read_pdf = PyPDF2.PdfFileReader(open_pdf_file)
num_pages = read_pdf.getNumPages()

ann_text = []
for page_num in range(num_pages):
    if read_pdf.isEncrypted:
        read_pdf.decrypt("")
        print(read_pdf.getPage(page_num).extractText())
        page_text = read_pdf.getPage(page_num).extractText().split()
        ann_text.append(page_text)

    else:
        print(read_pdf.getPage(page_num).extractText())
print(ann_text)

Это печатает список строк в файле PDF из предоставленной ссылки.

Просто интересно, могу ли я преобразовать переменную my_raw_data в читаемую строку?

Большое спасибо заранее!

Ответы на вопрос(2)

Решение Вопроса

вы можете использоватьИ.О.

import requests, PyPDF2, io

url = 'http://www.asx.com.au/asxpdf/20171108/pdf/43p1l61zf2yct8.pdf'
response = requests.get(url)

with io.BytesIO(response.content) as open_pdf_file:
    read_pdf = PyPDF2.PdfFileReader(open_pdf_file)
    num_pages = read_pdf.getNumPages()
    print(num_pages)
2

PS. Чтобы открыть файлы, всегда используйте менеджер контекста (with-заявление)

import requests, PyPDF2, io


url = 'http://www.asx.com.au/asxpdf/20171103/pdf/43nyyw9r820c6r.pdf'
response = requests.get(url)
my_raw_data = response.content

pdf_content = io.BytesIO(my_raw_data)
pdf_reader = PyPDF2.PdfFileReader(pdf_content)

if pdf_reader.isEncrypted:
    pdf_reader.decrypt("")
    print(pdf_reader.getPage(0).extractText())

else:
    print(pdf_reader.getPage(0).extractText())

Удачи ... :)

Ваш ответ на вопрос