2

我正在尝试使用scraperwikibs4将 PDF 转换为文本文件。我得到一个TypeError. 我是 Python 的新手,非常感谢一些帮助。

这里发生错误:

File "scraper_wiki_download.py", line 53, in write_file
f.write(soup)

这是我的代码:

# Get content, regardless of whether an HTML, XML or PDF file
def send_Request(url):        
    response = http.urlopen('GET', url, preload_content=False)
    return response

# Use this to get PDF, covert to XML
def process_PDF(fileLocation):
    pdfToProcess = send_Request(fileLocation)
    pdfToObject = scraperwiki.pdftoxml(pdfToProcess.read())
    return pdfToObject

# returns a navigatibale tree, which you can iterate through
def parse_HTML_tree(contentToParse):
    soup = BeautifulSoup(contentToParse, 'lxml')
    return soup

pdf = process_PDF('http://www.sfbos.org/Modules/ShowDocument.aspx?documentid=54790')
pdfToSoup = parse_HTML_tree(pdf)
soupToArray = pdfToSoup.findAll('text')

def write_file(soup_array):
    with open('test.txt', "wb") as f:
        f.write(soup_array)

write_file(soupToArray)
4

2 回答 2

1

到目前为止从未使用过scraperwiki,但这得到了文本:

import scraperwiki
import requests
from bs4 import BeautifulSoup

pdf_xml = scraperwiki.pdftoxml(requests.get('http://www.sfbos.org/Modules/ShowDocument.aspx?documentid=54790').content)
print(BeautifulSoup(pdf_xml, "lxml").find_all("text"))
于 2016-05-16T18:43:30.713 回答
1

我猜soupToArray = pdfToSoup.findAll('text')会返回某种列表,但f.write()仅适用于字符串,因此您必须对其进行迭代并以某种方式将每个元素转换为字符串。打印 soupToArray 以查看它的确切外观。

于 2016-05-16T10:32:11.817 回答