url提取工具_python | 文章公式img转url小工具

本文投稿自公众号【zinghd的思考】,一个玩飞控的算法工程师大佬!

我写的文章里通常有很多公式,这些公式是用LaTeX语法写的,

c05e7c3878ae53f8246b3c57cd961914.png

经过浏览器的渲染就可以显示为正确的公式,但是公众号和有些网站对公式的支持很差,无法显示正确排版的公式。如果需要把文章发到不同的网站,往往需要单独调整格式。

所以通常的做法是,把公式转换成图片,使用url的形式显示图片,然后再发到公众号,保证公式的正确。

于是我想,能不能写个工具,把文章里的公式都转成图片,并且直接生成一篇转换后新的文章。

我把这个目标分解成了几个步骤:
1.输入原始文章,查找其中的LaTeX
2.提取文章中的latex公式,转换成图片
3.把图片下载到我的git本地仓库
4.git上传到github
5.生成图片的url
6.用url替换latex公式,生成新的文章

078e91815f6b4adf87986d611d6c1afd.png

输入原始文章,查找其中的LaTeX语法

这一步主要用到的知识点:
python如何提取文件中的中文
用正则表达式在字符串中提取自己想要的部分

source_article_path='D:\\OneDrive - business\\Markdown\\自动生成的新文章'
source_article='2018-11-07[飞控]姿态误差(一)-欧拉角做差.md'
with open(source_article_path+'\\'+source_article,'rb') as f:
    #以utf-8格式提取中文,避免出现乱码
    article=f.read().decode('utf-8')
    comment = re.compile('\$\$.*?\$\$', re.DOTALL)
    a=comment.findall(article,re.S)
print('提取'+source_article+'中的公式')

latex公式转换成图片并下载

借用第三方网址,把latex语法转换成图片
这一步用到一点爬虫的网络请求
以及如何下载图片

for i in range(len(a)):
    formula=a[i][2:-2]
    #formula 就是latex语法 的字符串
    img = session.get('http://latex.codecogs.com/gif.latex?' + formula)
    #下载转换好的图片
    f = open(str(i)+'.png', 'ab')
    f.write(img.content) ##多媒体文件要是用conctent哦!
    f.close()
    #暂停10s,太快会被封IP
    time.sleep(10)   

构造图片url格式

因为GitHub不会自己返回图片的url,所以需要根据自己的仓库名和图片明自己构造url。
这一步图片还没上传,只是先构造url,用到的是字符串操作的基础知识。

    img_url='https://raw.githubusercontent.com/ZingHD/Markdown_picture/master/'+article_title+'/'+str(i)+'.png'
    img_urls.append(img_url)
    print('正在生成图片 进度'+str( ((i+1)/len(a))*100) + '%')
    print(img_urls[i])

git上传到github

使用python的git库,自动添加修改,并上传到自己的GitHub

repo = git.Repo(r'D:\Markdown_picture')
git = repo.git
git.add(article_title) # git add test1.txt
git.commit('-m', 'add'+article_title+time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) # git commit -m 'this is a test'
remote = repo.remote()
remote.push()

用url替换latex公式,生成新的文章

print('在目录'+'source_article_path'+'中用url替换文章里的公式')
with open(source_article_path+'\\'+source_article,'rb') as f:
    article=f.read().decode('utf-8')
    #构造url的markdown调用格式,并且替换掉原文件的latex语法
    for i in range(len(img_urls)):
        b=article.replace(a[i], '![]('+img_urls[i]+')')
        article = b
##重新写入新文件
print('在目录'+'source_article_path'+'中用生成新的md文件')
with open('new'+source_article,'w', encoding='utf-8') as f:
    f.write(b+'\n')

到此就完成了我需要的全部功能。

bbd28fafa1aee459634047e8332bd4ea.png
98d8c89da84ad8e57359e0f0738e8d2a.png

可继续改进的地方:
1.判断是否有重复文件夹,重复图片,有就跳过
2.调用次数过多会被封IP

收获,在没有分解任务之前觉得非常难,但是通过任务的合理划分,把任务分成一个一个可以执行的小步骤,你会发现每个步骤都是可以明确行动,并且涉及的知识也是非常初级的。就像给自己制定计划一样,如果把计划拆分到每一个可以执行的步骤,你会发现你离你的目标越来越近。

每一次折腾都是进步,关注微信公众号,回复【img2url】可以获得img2url的源码哦。

这么硬的干货,不给个好看?!

2307766c51a1c2663f1d73fb0276c4d8.png

欢迎关注这个骚包程序猿?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一些关于Python制作指定区域截图工具和Python截图PDF并提取文本的基本思路。 1. Python制作指定区域截图工具 要制作指定区域截图工具,您可以使用Python的Pillow库来实现。以下是一些基本步骤: - 安装Pillow库 - 导入Pillow库和其他必要的库 - 创建一个截图窗口并选择需要截图的区域 - 将截图保存到指定的文件路径 下面是一个示例代码: ```python from PIL import ImageGrab # 选择需要截图的区域 box = (100, 100, 500, 500) # (左上角x坐标,左上角y坐标,右下角x坐标,右下角y坐标) # 截图并保存到指定的文件路径 img = ImageGrab.grab(box) img.save("screenshot.png") ``` 2. Python截图PDF,并提取文本 要截图PDF并提取文本,您可以使用Python的PyPDF2库和Pillow库来实现。以下是一些基本步骤: - 安装PyPDF2库和Pillow库 - 导入PyPDF2库和其他必要的库 - 打开需要截图的PDF文件 - 选择需要截图的区域并将其换为图像 - 使用Pillow库将图像保存到指定的文件路径 - 使用PyPDF2库读取PDF文件并提取文本 下面是一个示例代码: ```python import PyPDF2 from PIL import Image # 打开PDF文件 pdf_file = open('example.pdf', 'rb') pdf_reader = PyPDF2.PdfFileReader(pdf_file) # 选择需要截图的区域并将其换为图像 page = pdf_reader.getPage(0) # 选择第一页 box = (100, 100, 500, 500) # (左上角x坐标,左上角y坐标,右下角x坐标,右下角y坐标) x, y, w, h = box img = Image.new('RGB', (w, h), (255, 255, 255)) img_draw = ImageDraw.Draw(img) img_draw.rectangle(((0, 0), (w, h)), fill=(255, 255, 255)) img_draw.rectangle(((x, y), (x+w, y+h)), fill=(0, 0, 0)) img = img.crop((x, y, x+w, y+h)) # 将图像保存到指定的文件路径 img.save('screenshot.png') # 使用PyPDF2库读取PDF文件并提取文本 text = '' for page_num in range(pdf_reader.numPages): page = pdf_reader.getPage(page_num) text += page.extractText() print(text) ``` 希望以上代码可以帮助您实现Python制作指定区域截图工具和Python截图PDF并提取文本的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值