使用 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() 的调用将按预期工作。
我正在尝试使用 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() 的调用将按预期工作。