「スクレイピング・ハッキング・ラボ pythonで自動化する未来型生活」の写経をしています。
6.11「PDFをスクレイピングする」でエラーが出てしまいます。
python
1from pdfminer.pdfinterp import PDFResourceManager,PDFPageInterpreter 2from pdfminer.converter import TextConverter 3from pdfminer.layout import LAParams 4from pdfminer.pdfpage import PDFPage 5 6input_path="filename.pdf" 7output_path="result.txt" 8 9rsrcmgr=PDFResourceManager() 10codec="utf-8" 11params=LAParams() 12 13with open(output_path,"ab")as output: 14 device=TextConverter(rsrcmgr,output,codec=codec,laparams=params) 15 16with open(input_path,"rb")as input: 17 interpreter =PDFPageInterpreter(rsrcmgr,device) 18 for page in PDFPage.get_pages(input): 19 interpreter.process_page(page) 20 21device.close()
とすると、
ValueError Traceback (most recent call last)
<ipython-input-37-4a56e0a6e7c9> in <module>
2 interpreter =PDFPageInterpreter(rsrcmgr,device)
3 for page in PDFPage.get_pages(input):
----> 4 interpreter.process_page(page)
5
6 device.close()
/opt/anaconda3/lib/python3.7/site-packages/pdfminer/pdfinterp.py in process_page(self, page)
894 self.device.begin_page(page, ctm)
895 self.render_contents(page.resources, page.contents, ctm=ctm)
--> 896 self.device.end_page(page)
897 return
898
/opt/anaconda3/lib/python3.7/site-packages/pdfminer/converter.py in end_page(self, page)
52 self.cur_item.analyze(self.laparams)
53 self.pageno += 1
---> 54 self.receive_layout(self.cur_item)
55 return
56
/opt/anaconda3/lib/python3.7/site-packages/pdfminer/converter.py in receive_layout(self, ltpage)
212 if self.showpageno:
213 self.write_text('Page %s\n' % ltpage.pageid)
--> 214 render(ltpage)
215 self.write_text('\f')
216 return
/opt/anaconda3/lib/python3.7/site-packages/pdfminer/converter.py in render(item)
202 if isinstance(item, LTContainer):
203 for child in item:
--> 204 render(child)
205 elif isinstance(item, LTText):
206 self.write_text(item.get_text())
/opt/anaconda3/lib/python3.7/site-packages/pdfminer/converter.py in render(item)
202 if isinstance(item, LTContainer):
203 for child in item:
--> 204 render(child)
205 elif isinstance(item, LTText):
206 self.write_text(item.get_text())
/opt/anaconda3/lib/python3.7/site-packages/pdfminer/converter.py in render(item)
202 if isinstance(item, LTContainer):
203 for child in item:
--> 204 render(child)
205 elif isinstance(item, LTText):
206 self.write_text(item.get_text())
/opt/anaconda3/lib/python3.7/site-packages/pdfminer/converter.py in render(item)
204 render(child)
205 elif isinstance(item, LTText):
--> 206 self.write_text(item.get_text())
207 if isinstance(item, LTTextBox):
208 self.write_text('\n')
/opt/anaconda3/lib/python3.7/site-packages/pdfminer/converter.py in write_text(self, text)
195 if self.outfp_binary:
196 text = text.encode()
--> 197 self.outfp.write(text)
198 return
199
ValueError: write to closed file
このようにエラーになってしまいます。
色々探してみたのですが、解決方法がわかりませんでした。
拙い質問ですが、御教授いただければと思います。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/17 05:51
2021/03/17 06:51