这个是我学习爬取TXT和PDF的代码,前半段是读取TXT,后半段是读取PDF,PDF中使用了第三方库,pdfminer3k,使用pip安装即可。pip install pdfminer3k。PDF其中注释掉的为读取网络上的PDF文档。 代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
from urllib import request from pdfminer.pdfdevice import PDFDevice from pdfminer.pdfinterp import PDFPageInterpreter, PDFResourceManager from pdfminer.pdfparser import PDFDocument, PDFParser from pdfminer.converter import PDFPageAggregator from pdfminer.layout import LAParams # html = request.urlopen( # 'https://en.wikipedia.org/robots.txt' # ).read().decode('utf-8') # print(html) # 读取txt # fp = open('./practice/byte-of-python-chinese-edition.pdf','rb') # 获取文档对象 fp = request.urlopen('https://q.stock.sohu.com/newpdf/201831703172.pdf') # 读取网络pdf parser = PDFParser(fp) # 创建一个与文档关联的解释器 doc = PDFDocument() # 文档对象 # 链接解释器和文档对象 parser.set_document(doc) doc.set_parser(parser) # 初始化文档 doc.initialize() # 可接收文档密码 resource = PDFResourceManager() # 创建PDF资源管理器 laparam = LAParams() # 参数分析器 device = PDFPageAggregator(resource,laparams=laparam) # 创建一个聚合器 interpreter = PDFPageInterpreter(resource,device) # 创建 PDF页面解释器 # 使用文档对象得到页面的集合 for page in doc.get_pages(): # 使用页面解释器来读取 interpreter.process_page(page) # 使用聚合器来获取内容 layout = device.get_result() for out in layout: if hasattr(out,'get_text'): # 有没有这个属性 print(out.get_text())
近期评论