我正试图从一个pdf文档中获取一些数据,使用的是pyhon的scraperwiki。如果我使用urllib2下载文件,效果非常好,如下所示:
pdfdata = urllib2.urlopen(url).read()
xmldata = scraperwiki.pdftoxml(pdfdata)
root = lxml.html.fromstring(xmldata)
pages = list(root)但棘手的部分来了。因为我想要这样做的大量pdf文件,我在我的磁盘上,我想要删除第一行,并直接传递的pdf文件作为一个参数。但是,如果我尝试
pdfdata = open("filename.pdf","wb")
xmldata = scraperwiki.pdftoxml(pdfdata)
root = lxml.html.fromstring(xmldata)我得到以下错误
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?
发布于 2015-05-26 16:57:24
Urllib2.urlopen(.).read()只读取从作为参数传递的url返回的流的内容。
而open()返回文件处理程序。正如urllib2需要执行一个open()调用,然后进行read()调用一样,文件处理程序也是如此。
更改程序以使用以下行:
with open("filename.pdf", "rb") as pdffile:
pdfdata=pdffile.read()
xmldata = scraperwiki.pdftoxml(pdfdata)
root = lxml.html.fromstring(xmldata)这将打开您的pdf,然后将内容读入名为pdfdata的缓冲区。从这里开始,您对scraperwiki.pdftoxml()的调用将如预期的那样工作。
https://stackoverflow.com/questions/30464349
复制相似问题