我最近开始使用 ScraperWiki 来做你描述的事情。
这是使用 ScraperWiki 提取 PDF 数据的示例。
该scraperwiki.pdftoxml()
函数返回一个 XML 结构。
然后,您可以使用 BeautifulSoup 将其解析为可导航的树。
这是我的代码 -
import scraperwiki, urllib2
from bs4 import BeautifulSoup
def send_Request(url):
#Get content, regardless of whether an HTML, XML or PDF file
pageContent = urllib2.urlopen(url)
return pageContent
def process_PDF(fileLocation):
#Use this to get PDF, covert to XML
pdfToProcess = send_Request(fileLocation)
pdfToObject = scraperwiki.pdftoxml(pdfToProcess.read())
return pdfToObject
def parse_HTML_tree(contentToParse):
#returns a navigatibale tree, which you can iterate through
soup = BeautifulSoup(contentToParse)
return soup
pdf = process_PDF('http://greenteapress.com/thinkstats/thinkstats.pdf')
pdfToSoup = parse_HTML_tree(pdf)
soupToArray = pdfToSoup.findAll('text')
for line in soupToArray:
print line
这段代码将打印出一大堆丑陋的<text>
标签。</page>
如果有任何安慰的话,每一页都用 分隔。
如果您想要<text>
标签内的内容,例如可能包括标题<b>
,请使用line.contents
如果您只想要每一行文本,不包括标签,请使用line.getText()
这很麻烦,也很痛苦,但这适用于可搜索的 PDF 文档。到目前为止,我发现这是准确的,但很痛苦。