python-3.x 如何使用Requests在线解码PDF中的文本?

dm7nw8vv  于 2023-05-02  发布在  Python
关注(0)|答案(3)|浏览(98)

我正试图从澳大利亚证券交易所网站创建一个PDF拉取器,这将使我能够搜索所有的“公告”所作的公司和搜索关键字在PDF的这些公告。
到目前为止,我所做的是使用请求库。下面是我目前的代码:

import requests

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

print(response.content)

然而,打印的是以下字符串(我将切断它,因为它太长了):

> b'%PDF-1.5\r%\xe2\xe3\xcf\xd3\r\n5 0 obj\r<</E 212221/H [ 1081 145 ]/L
> 212973/Linearized 1/N 1/O 8/T 212553>>\rendobj\r                      
> \r\r42 0 obj\r<</DecodeParms <</Columns 5/Predictor 12>>/Encrypt 7 0
> R/Filter /FlateDecode/ID [(\\216\\203\\217T\\n\\f\\236\\345?%\\214t4
> E\\271) (\\216\\203\\217T\\n\\f\\236\\345?%\\214t4 E\\271)]/Index [5
> 38]/Info 3 0 R/Length 86/Prev 212554/Root 6 0 R/Size 43/Type /XRef/W
> [1 3
> 1]>>\rstream\nx\x9ccbd`\x10``b``:\x04"\x19\xab\xc1d-X\xc4\x06D2\xac\x02\xb3\x93\xc0\xe2\x1d
> \x92?\x07,\x1e\t"\xb9T\x80$\xe3\x84\xcb@\x92\xa9m"\x03\x13\xe3\xdf\x13Z`Y\x06\xc6\x01#\xff3\xb0h\xbcfb`\xb6\x12\x02\xba\xe4\xef!S\x06\x0

我已经搜索了stackexchange和其他网站几天,并试图使用print(response.content.decode('utf-8')以及ascii,但他们都不等于任何我可以阅读。
抱歉,因为我知道这是显而易见的,我是一个菜鸟,但任何帮助将不胜感激!
多谢了。

oipij1gg

oipij1gg1#

PDF文件是二进制模式,你应该阅读它的格式与它的页眉和页脚。你不能读取bianry文件作为原始字符串。
1)如果你的文件名中有任何空格,那么PyPDF 2解密函数最终将失败,尽管返回一个成功代码。在通过PyPDF2运行PDF之前,在命名PDF时尽量使用下划线。
例如,而不是“我的PDF”。pdf”做一些类似于“my_pdf的事情。pdf”。
2)尝试解密它使用一个空字符串作为密码,它的工作原理。
试试这个:

import requests, PyPDF2

url = 'http://www.asx.com.au/asxpdf/20171103/pdf/43nyyw9r820c6r.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)
if read_pdf.isEncrypted:
    read_pdf.decrypt("")
    print(read_pdf.getPage(0).extractText())

else:
    print(read_pdf.getPage(0).extractText())
46qrfjad

46qrfjad2#

该响应是表示PDF内容的编码字符串。您需要使用提取工具,如pdfminer。页面上有一个示例,向您展示如何通过Python进行样本提取。

k4aesqcs

k4aesqcs3#

您可以简单地将一个URL粘贴到一个shell脚本中,就像我在这里对该地址所做的那样,但它也可以是一个地址列表

@echo off&Title PDF URL TO TXT&Color 9F
if not "%1"=="" set "URL=%1"
if "%1"=="" set /p "URL=URL ? "

curl -o "%temp%\temp.pdf" "%URL%"
timeout 5
"%temp%\temp.pdf"
"C:\Apps\PDF\poppler\23.01.0\Library\bin\pdftotext.exe" -layout -nopgbrk -enc UTF-8 "%temp%\temp.pdf"
notepad "%temp%\temp.txt"

因此,有几种方法可以复制粘贴URL,就像我在点击我保持方便的下拉命令的地方后从问题中所做的那样,还有很多方法可以解析结果文本文件以找到一个单词,但最简单的是从现在打开的文件中找到,剪切和粘贴。
显然,对于少数更安全的目标站点不起作用,但对于大多数传统的PDF URL应该起作用。

相关问题