赞
踩
“”"
目标:从pdf文件中抽取出含有关键字的页面,并将这些页面合并一个新的pdf文件
“”"
from PyPDF2 import PdfFileReader, PdfFileWriter
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfpage import PDFTextExtractionNotAllowed
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.pdfdevice import PDFDevice
from pdfminer.layout import *
from pdfminer.converter import PDFPageAggregator
fp = open(‘mypdf.pdf’, ‘rb’)
import re
import os
#来创建一个pdf文档分析器
parser = PDFParser(fp)
#创建一个PDF文档对象存储文档结构
document = PDFDocument(parser)
if not document.is_extractable:
raise PDFTextExtractionNotAllowed
else:
rsrcmgr=PDFResourceManager()
laparams=LAParams()
device=PDFPageAggregator(rsrcmgr,laparams=laparams)
interpreter=PDFPageInterpreter(rsrcmgr,device)
pageindex = []
i = 0
pattern = re.compile(“collinear”)
for page in PDFPage.create_pages(document):
interpreter.process_page(page)
layout=device.get_result() # return text image line curve
for x in layout:
if isinstance(x,LTText):
if pattern.search(x.get_text()):
pageindex.append(i)
i +=1
pdf_output = PdfFileWriter()
pdf_input = PdfFileReader(fp)
for j in pageindex:
pdf_output.addPage(pdf_input.getPage(j))
final_path =os.path.join(r"C:\Users\tc\Desktop\final.pdf")
with open(final_path,“wb”) as f:
pdf_output.write(f)
fp.close()
好吧,到此结束???很多人会说,这些有什么意思,我随便点击一下鼠标就完事了?
----------------------------------垃圾分割线-------------------------------------------
别急,以上仅仅作为演示,干货在下面
-----------干货1-------------
技术:文章的封面是经过笔者仔细研究pypdfminer之后做出的图,理清了该库的主要逻辑。
----------干货2---------------
场景:A君为证券公司IPO小兵,近来在研究[共同实际控制人]问题,然而,这问题并不常见,通过网络关键搜索-即使派上了全文搜索以及牛逼哄哄的google-以及肉眼式的轰炸,仅仅找到了几个老旧的案例。这显然不是A君要的东西,对此他苦恼不堪。难道就没有捷径?
有的,不过,捷径通常掌握在思考者手里!
我们来思考刚刚提到的窘境
问题:搜寻共同实际控制人案例
问题的根本解决之路:从众多IPO公司招股书中查找
手段:”人生苦胆,我学python“
思路:
1,利用爬虫下载证监会招股说明书–PDF格式文件
2,利用pdfminer解析文本,获取含有【共同实际控制人】招股书公司名字
PART ONE
以是下载证监会反馈意见scrapy项目的主要spider代码:
import scrapy
import os
import urllib.request
from scrapy.selector import Selector
from .tools import alreay_exit,create_worddoc,get_para
from .tools import get_start_urls
class YxplSpider(scrapy.Spider):
name = ‘yxpl’
allowed_domains = [‘http://www.csrc.gov.cn’]
start_urls = get_start_urls()
exit_files = alreay_exit()
def parse_page(self,response):
final_dir =r"C:\Users\tc\PycharmProjects\yxpl\files"
item = SeoItem()
pre = “/”.join(response.url.split(“/”)[:-1])
title = response.xpath(“//head/title/text()”).extract()[0]
item[“title”] = title
#to get the pdf url
urls = response.xpath(‘//div[@class=“content”]/a/@href’).extract()
if len(urls) > 0:
for j in urls:
final_url = pre + j[1:] #最终网址
if item[“title”] not in self.exit_files:
try:
item[“content”] =urllib.request.urlopen(final_url).read()
file = open(os.path.join(final_dir, item[“title”] + “.pdf”), mode=“wb”)
file.write(item[“content”])
file.close()
except urllib.request.HTTPError:
print(“Error with HTTPErro” + item[“title”])
else:
print(title)
return item
def parse(self, response):
pre = r"http://www.csrc.gov.cn/pub/newsite/fxjgb/zrzfkyj/"
urls = response.xpath(‘//ul[@id=“myul”]/li/a/@href’).extract()
for i in urls:
new_url = “http://www.csrc.gov.cn/pub/” + “/”.join(i.split(“/”)[3:]
yield scrapy.Request(new_url,callback=self.parse_page,dont_filter=True)
PART TWO
2,返回含有关键子的文件名
对于下载好的PDF,仅仅只需要打开文件并对比关键字即可。由于过程简单,这里就不展示代码了。(实际上并不是我不愿意展示,而是因为运行速度太慢了!,一个400页的PDF大概需要一分多钟才能运行完毕,下载的文件有1500份,最少需要15个小时,so,python库确实 慢!慢!慢!)
含有【共同实际控制人】招股书名称截图
结语:对于PDF的操作介绍就到此结束。本文仅仅作为一种运用库展示代码编写过程,具体技术还需要有兴趣的朋友自己专研。
---------------ps-------------------
好吧,我还是透露在项目中发现的一个pycharm的一个重要功能–类的层级关系图,并将它与官方网站的模型图进行对比。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)
mg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png)
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。