我正在尝试使用scraperwiki for pyhon从pdf文档中获取一些数据。如果我使用 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?
答案 0 :(得分:0)
urllib2.urlopen(...)。read()只是读取你从作为参数传递的url返回的流的内容。
open()返回文件处理程序。正如urllib2需要执行open()调用然后调用read()一样,文件处理程序也是如此。
更改您的程序以使用以下行:
const char *
这将打开你的pdf,然后将内容读入名为pdfdata的缓冲区。从那里你对scraperwiki.pdftoxml()的调用将按预期工作。