Я работаю над скриптом для извлечения текста из судебных дел, используя https://case.law/docs/site_features/api. Я создал методы для поиска и создания-xlsx, которые работают хорошо, но я борюсь с методом, чтобы открыть онлайн-ссылку в формате PDF, записать (wb) во временный файл, прочитать и извлечь данные (основной текст), а затем закрыть Это. Конечная цель — использовать содержание этих кейсов для НЛП.
Я подготовил функцию (см. ниже) для загрузки файла:
def download_file(file_id):
http = urllib3.PoolManager()
folder_path = "path_to_my_desktop"
file_download = "https://cite.case.law/xxxxxx.pdf"
file_content = http.request('GET', file_download)
file_local = open( folder_path + file_id + '.pdf', 'wb' )
file_local.write(file_content.read())
file_content.close()
file_local.close()
Сценарий работает хорошо, поскольку он загружает файл и создает его на моем рабочем столе, но когда я пытаюсь вручную открыть файл на рабочем столе, у меня появляется это сообщение от Acrobat Reader:
Adobe Acrobat Reader не удалось открыть «file_id.pdf», потому что это либо неподдерживаемый тип файла, либо файл был поврежден (например, он был отправлен как вложение электронной почты и не был правильно декодирован).
Я думал, что это библиотека, поэтому я попытался использовать Requests / xlswriter / urllib3... (пример ниже — я также попытался прочитать его из сценария, чтобы увидеть, было ли это Adobe, это была проблема, но, видимо, нет)
# Download the pdf from the search results
URL = "https://cite.case.law/xxxxxx.pdf"
r = requests.get(URL, stream=True)
with open('path_to_desktop + pdf_name + .pdf', 'w') as f:
f.write(r.text)
# open the downloaded file and remove '<[^<]+?>' for easier reading
with open('C:/Users/amallet/Desktop/r.pdf', 'r') as ff:
data_read = ff.read()
stripped = re.sub('<[^<]+?>', '', data_read)
print(stripped)
вывод:
document.getElementById('next').value = document.location.toString();
document.getElementById('not-a-bot-form').submit();
с 'wb' и 'rb' вместо этого (и удалением *** раздетого *** sript:
r = requests.get(test_case_pdf, stream=True)
with open('C:/Users/amallet/Desktop/r.pdf', 'wb') as f:
f.write(r.content)
with open('C:/Users/amallet/Desktop/r.pdf', 'rb') as ff:
data_read = ff.read()
print(data_read)
и вывод:
<html>
<head>
<noscript>
<meta http-equiv="Refresh" content="0;URL=?no_js=1&next=/pdf/7840543/In%20re%20the%20Extradition%20of%20Garcia,%20890%20F.%20Supp.%20914%
20(1994).pdf" />
</noscript>
</head>
<body>
<form method="post" id="not-a-bot-form">
<input type="hidden" name="csrfmiddlewaretoken" value="5awGW0F4A1b7Y6bx
rYBaA6GIvqx4Tf6DnK0qEMLVoJBLoA3ZqOrpMZdUXDQ7ehOz">
<input type="hidden" name="not_a_bot" value="yes">
<input type="hidden" name="next" value="/pdf/7840543/In%20re%20
the%20Extradition%20of%20Garcia,%20890%20F.%20Supp.%20914%20(1994).pdf" id="next">
</form>
<script>
document.getElementById(\'next\').value = document.loc
ation.toString();
document.getElementById(\'not-a-bot-form\').submit();
</script>
<a href="?no_js=1&next=/pdf/7840543/In%20re%20the%20Extradition%20of%20Garcia,%2
0890%20F.%20Supp.%20914%20(1994).pdf">Click here to continue</a>
</body>
</html>
но ни один не работает. PDF-файл не защищен паролем, и я пробовал на другом сайте, и он тоже не работает.
Поэтому мне интересно, есть ли у меня другая проблема, которая не связана с самим кодом.
Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.
благодарю вас