2016-05-16 1 views
2

Я пытаюсь преобразовать PDF в текстовый файл, используя scraperwiki и bs4. Я получаю TypeError. Я очень новичок в Python и очень ценю небольшую помощь.TypeError: должен быть конвертируемым в буфер, а не ResultSet

Ошибка происходит здесь:

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) 
+0

Это может помочь, чтобы узнать, какая линия бросает исключение. – polku

ответ

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")) 
1

Я думаю soupToArray = pdfToSoup.findAll('text') возвращает какой-то из списка, но f.write() работает только на строки, так что вы должны перебирать на нем и каким-то образом преобразовать каждый элемент в строку. Распечатайте soupToArray, чтобы увидеть, как он выглядит.

+0

Похоже, вы правы. К сожалению, я получаю пустой список. Кажется, что pdfToSoup не выполняет свою работу. – tonestrike

Смежные вопросы