0

我正在尝试使用 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 ?

4

1 回答 1

0

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() 的调用将按预期工作。

于 2015-05-26T16:57:24.400 回答