使用 scraperwiki 获取磁盘上的 pdf 文件

Using scraperwiki for pdf-file on disk

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

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

While open() returns 文件处理程序。正如 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() 的调用将按预期工作。