【问题标题】:Python Scraping PDF's From a Website Why Are They All Corrupt and the Same Size?Python 从网站上抓取 PDF 为什么它们都损坏且大小相同?
【发布时间】:2017-05-03 09:06:56
【问题描述】:

希望这将是一个简单的。我正在尝试进行一些网络抓取,从页面下载所有 pdf 文件。目前我正在从体育页面上抓取文件进行练习。我使用 Automatetheboringstuff + 来自另一个用户 (retrieve links from web page using python and BeautifulSoup) 的帖子来编写此代码。

import requests
import time
from bs4 import BeautifulSoup, SoupStrainer

r = requests.get('http://secsports.go.com/media/baseball')

soup = BeautifulSoup(r.content)

for link in BeautifulSoup(r.text, parseOnlyThese=SoupStrainer('a')):
    if link.has_attr('href'):
    if 'pdf' in str(link):
        image_file = open(os.path.join('E:\\thisiswhereiwantmypdfstogo', os.path.basename(link['href'])), 'wb')
        for chunk in r.iter_content(100000):
            image_file.write(chunk)
            image_file.close()

输出到我指定的目录的文件都在那里,这很好,但是所有文件的文件大小都是相同的,当我打开 Adob​​ePro 来查看它们时,我收到一条错误消息:

“Adobe Acrobat 无法打开“FILENAMEHERE”,因为它不是受支持的文件类型或文件已损坏(例如,它是作为电子邮件附件发送的并且未正确解码)。”

提示我写入过程出现问题的一个小提示是,在运行 image_file.write(chunk) 之后,它为每个文件输出相同的数字。

这是文件夹中 pdf 的样子:

我想我只需要在编写过程中的某处添加一个参数即可使其正常工作,但我不知道它会是什么。我用谷歌搜索了一个答案,也在这里搜索了一下,但找不到答案。

谢谢!

【问题讨论】:

标签: python pdf web-scraping python-requests


【解决方案1】:

嗯。在做了更多的研究之后,我似乎找到了问题所在。我不明白为什么会这样,但我会试一试。我修改了我的代码,使每个链接(['href'])成为一个响应对象。然后我把这些写到我的目录中,它起作用了。

【讨论】:

  • 您能展示一下您是如何修改代码的吗?我遇到了同样的问题。然而,在我的例子中,前几个链接工作得很好,但是在下载了大约 50 个链接之后,requests.get(url, stream=True) 不断损坏下载的任何pdf 文件。
猜你喜欢
  • 2023-03-24
  • 2018-09-01
  • 2017-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多