首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >磁盘上pdf文件使用scraperwiki

磁盘上pdf文件使用scraperwiki
EN

Stack Overflow用户
提问于 2015-05-26 16:43:07
回答 1查看 714关注 0票数 0

我正试图从一个pdf文档中获取一些数据,使用的是pyhon的scraperwiki。如果我使用urllib2下载文件,效果非常好,如下所示:

代码语言:javascript
复制
pdfdata = urllib2.urlopen(url).read()
xmldata = scraperwiki.pdftoxml(pdfdata)
root = lxml.html.fromstring(xmldata)
pages = list(root)

但棘手的部分来了。因为我想要这样做的大量pdf文件,我在我的磁盘上,我想要删除第一行,并直接传递的pdf文件作为一个参数。但是,如果我尝试

代码语言:javascript
复制
pdfdata = open("filename.pdf","wb")
xmldata = scraperwiki.pdftoxml(pdfdata)
root = lxml.html.fromstring(xmldata)

我得到以下错误

代码语言:javascript
复制
xmldata = scraperwiki.pdftoxml(pdfdata)
File "/usr/local/lib/python2.7/dist-packages/scraperwiki/utils.py", line 44, in pdftoxml
pdffout.write(pdfdata)
TypeError: must be string or buffer, not file

我猜想这是因为我没有正确打开pdf?

如果是的话,是否有办法像urllib2.urlopen()那样从磁盘中打开pdf?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-26 16:57:24

Urllib2.urlopen(.).read()只读取从作为参数传递的url返回的流的内容。

而open()返回文件处理程序。正如urllib2需要执行一个open()调用,然后进行read()调用一样,文件处理程序也是如此。

更改程序以使用以下行:

代码语言:javascript
复制
with open("filename.pdf", "rb") as pdffile:
      pdfdata=pdffile.read()

xmldata = scraperwiki.pdftoxml(pdfdata)
root = lxml.html.fromstring(xmldata)

这将打开您的pdf,然后将内容读入名为pdfdata的缓冲区。从这里开始,您对scraperwiki.pdftoxml()的调用将如预期的那样工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30464349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档