首页 > 解决方案 > Python“损坏”下载的pdf文件

问题描述

我正在编写一个程序,使用他们的嵌入式工具将维基百科页面自动下载为 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)

出于调试原因,我对大部分内容进行了硬编码。请随时帮助我改进代码,但请注意,这不是我的主要目的。

我现在的问题是:我能做些什么来阻止文件被破坏(以正确的方式编码)

是我要从中下载的链接(单击按钮)。注意:这是一个带有重定向的即时下载链接。

感谢您的帮助,如果您需要更多信息,请询问我。

编辑:通过 Word 打开 PDF 让我看到数据(文本、段落..)可用。所以 PDF 包含数据,下载本身似乎是成功的。

下载的文件大小不同,也许有人也可以看看这个问题:打开:58KB urllib:18KB 手动:239KB

标签: pythonencodingpython-requestsurllibwikipedia

解决方案


推荐阅读