python - 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
解决方案
推荐阅读
- java - 从角度 8 加密时,解密文本(AES 128 位)开头的垃圾值
- android - 为什么关闭选项菜单时不调用 onPanelCosed?
- c++ - Qmake 错误:QT 中的未知模块:图表
- azure - 如何在 Azure 数据工厂中获取文件计数并基于它进行活动
- windows - Windows:如何获取当前发出声音的所有应用程序列表?
- c# - 从列表中过滤
列表的 - angular - NullInjectorError:Ionic 4 FirebaseX 中没有 FirebaseX 的提供程序
- javascript - 仅在 javascript 中使用 Regex 保留地址的结尾
- css - 用 css 平滑动画缩放对象
- vb.net - 如何在打印预览对话框中显示多个页面?