在Python中将pdf转换为html

时间:2016-12-21 13:57:29

标签: python html parsing pdf pdf2htmlex

Python 2.6

我正在尝试解析我的pdf文件,其中一种方法是将其转换为html并提取标题及其段落。 所以,我尝试了pdf2htmlEX,它将我的pdf转换为html而不会打扰我的pdf格式......到目前为止,我很高兴,但当我尝试使用这些命令访问我的标题时:

>> import subprocess

>> path = "/home/administrator/Documents/pdf_file.pdf"
>> subprocess.call(["pdf2htmlEX" , path])

但是当我打开我的html文件时,它给了我不必要的东西以及我的文本,更重要的是我的文本没有标题标签只是一堆div和span。

 >> f = open('/home/administrator/Documents/pdf_file.html','r')
 >> f = f.read()
 >> print f

我甚至尝试使用BeautifulSoup

访问它
>> from bs4 import BeautifulSoup as bs

>> soup = BeautifulSoup(f)
>> soup.find('div', attrs={'class': 'site-content'}).h1

它没有给我任何东西,因为没有标签。我也尝试过HTMLParser

来自HTMLParser的

导入HTMLParser

# create a subclass and override the handler methods
class myhtmlparser(HTMLParser):
    def __init__(self):
         self.reset()
         self.NEWTAGS = []
         self.NEWATTRS = []
         self.HTMLDATA = []
    def handle_starttag(self, tag, attrs):
         self.NEWTAGS.append(tag)
         self.NEWATTRS.append(attrs)
    def handle_data(self, data):
         self.HTMLDATA.append(data)
    def clean(self):
         self.NEWTAGS = []
         self.NEWATTRS = []
         self.HTMLDATA = []

parser = myhtmlparser()
parser.feed(f)

# Extract data from parser
tags  = parser.NEWTAGS
attrs = parser.NEWATTRS
data  = parser.HTMLDATA

# Clean the parser
parser.clean()

# Print out our data
#print tags
print data

但他们都没有满足我的要求。我想要的是从每个html文件中提取每个标题以及它们所需的段落是太多了,不能问...:p我几乎搜索了每个网站并阅读了几乎所有内容,但我的所有努力都徒劳无功。 Plz指导我...

1 个答案:

答案 0 :(得分:0)

如果是python3及更高版本,则应为

outputFilename = outputDir + filename.replace(".pdf",".html")
subprocess.run(["pdf2htmlEX",file,outputFilename])