- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发 Scrapy Spider,尝试使用 slate 从目录中的多个 PDF 文件中提取文本。我对将实际的 PDF 保存到磁盘没有兴趣,因此建议我查看 io.bytesIO 子类 https://docs.python.org/2/library/io.html#buffered-streams .
但是我不确定如何将 PDF 正文传递给 bytesIO 类,然后传递虚拟 PDF 板岩来获取文本。到目前为止我已经:
class Ove_Spider(BaseSpider):
name = "ove"
allowed_domains = ['myurl.com']
start_urls = ['myurl/hgh/']
def parse(self, response):
for a in response.xpath('//a[@href]/@href'):
link = a.extract()
if link.endswith('.pdf'):
link = urlparse.urljoin(base_url, link)
yield Request(link, callback=self.save_pdf)
def save_pdf(self, response):
in_memory_pdf = BytesIO()
in_memory_pdf.read(response.body) # Trying to read in PDF which is in response body
我得到:
in_memory_pdf.read(response.body)
TypeError: integer argument expected, got 'str'
我怎样才能让它工作?
最佳答案
当您执行in_memory_pdf.read(response.body)
时,您应该传递要读取的字节数。您想要初始化缓冲区,而不是读取它。
在 python 2 中,只需将 BytesIO
初始化为:
in_memory_pdf = BytesIO(response.body)
在 Python 3 中,您不能将 BytesIO 与字符串一起使用,因为它需要字节。错误消息显示 response.body
的类型为 str
:我们必须对其进行编码。
in_memory_pdf = BytesIO(bytes(response.body,'ascii'))
但由于 pdf 可以是二进制数据,我认为 response.body
将是 bytes
,而不是 str
。在这种情况下,简单的 in_memory_pdf = BytesIO(response.body)
就可以工作。
关于python - 创建 bytesIO 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39799009/
我在 Python 中从 BytesIO 对象编写 .tar.gz 文件时遇到问题。只编写一个普通的 tarfile 效果很好,但是如果我将写入模式更改为 .tar.gz(或 bz 或 xz),它不会
我使用PyPDF4来合并pdf文件,然后使用合并后的pdf作为HttpResponse。我使用 BytesIO 来获取 PdfFileMerger 的结果。 我使用这段代码让它工作 def merge
当我尝试使用 python "c:\Django\blongo\blongo\blog\manage.py" runserver 我得到: File "C:\Python27\lib\site-pac
我无法理解这两个 BytesIO 对象的区别。如果我这样做: f = open('decoder/logs/testfile.txt', 'rb') file = io.BytesIO(f.read(
我正在尝试在我的程序中使用 Pillow 将相机中的字节串保存到文件中。这是一个示例,其中包含来 self 的相机的一个小原始字节字符串,它应该表示分辨率为 10x5 像素的灰度图像,使用 LSB 和
我有以下代码: 这部分在内存中生成 CSV: def to_csv(events: list) -> io.BytesIO(): if not events: return N
IOBase.truncate 的文档方法说: truncate(size=None) Resize the stream to the given size in bytes (or the cur
尝试在 python3.0 中对字符串进行标记化时,为什么在标记开始之前会出现前导 'utf-8'? 来自python3 docs , tokenize 现在应该按如下方式使用: g = tokeni
我正在开发 Scrapy Spider,尝试使用 slate 从目录中的多个 PDF 文件中提取文本。我对将实际的 PDF 保存到磁盘没有兴趣,因此建议我查看 io.bytesIO 子类 https:
在 OSX 上的 Python 3.5.1 上运行: import io b = io.BytesIO() b.write(b'222') print(b.getvalue()) b.truncate
我想试试 python BytesIO 类。 作为一个实验,我尝试写入内存中的 zip 文件,然后从该 zip 文件中读取字节。因此,我没有将文件对象传递给 gzip,而是传递了一个 BytesIO
我有一个包含 excel 文档数据的 BytesIO 对象。我要使用的库不支持 BytesIO 并且需要一个 File 对象。如何获取我的 BytesIO 对象并将其转换为 File 对象? 最佳答案
我目前正在尝试创建一个用于深度学习的大型数据集,其中包含大量存储在一起的压缩 mp3 文件,因此我没有 10 万个文件必须单独加载。 x = b'' with open("file1.mp3", "r
我想使用 io 中的 BytesIO 类来创建数据流,但是如果我通过它传输大量数据,它会占用大量内存,所以我问是否可以释放“旧”使用的内存“我已经阅读过的数据。 如果 io 模块无法做到这一点,我愿意
查看底部的更新 - 问题略有变化 我正在尝试使用 boto3 的 .download_fileobj 方法将文件从 s3 下载到类似文件的对象,但是当我尝试检查下载的字节流时,它是空的。但是我不确定我
我正在尝试使用 discord.py 发送一个文本文件,但是当我发送该文件时,它似乎是空的。 一个示例片段: bytes = BytesIO() test = b'sadfasdfsa' bytes.
我正在用 python 2.7 制作一个项目,但由于文档是用 python 3.5 编写的,所以它开始在最后部分给我带来一些错误。所以我将所有内容更改为 python 3.5,但由于 bytesIO,
我想直接在模型保存中上传生成的图像,而不必先将其保存到文件中。 型号: avatar = models.ImageField(upload_to="img/", null=True, blank=Tr
有一段不错的、经过测试的 python PyPDF2 代码,一个 .py 设计用于在“真实”操作系统文件上运行。调试完所有内容后,我现在正尝试将其合并到 plPython 函数中,用 io.Bytes
我想将 BytesIO 对象用作连续缓冲区(常见用例)。但是,是否可以从头部删除不再需要的字节? 看起来不像,因为只有一个 truncate() 方法。 ['__class__', '__delatt
我是一名优秀的程序员,十分优秀!