喜欢书法的程序员看过来:15行代码抓取兰亭序全文单字高清字帖

近日网购上瘾,狂买至肉疼,最后连一本打折后28块钱的兰亭序字帖也不舍得下单了。犹豫之间,发现了一个不错的网站——书法欣赏,名家名帖尽收于此。令人惊喜的是,这个网站居然提供了兰亭序全文单字高清字帖,网址见下文中的代码。

这下妥了,不用花钱买字帖了,下载下来照着单字临摹,比字帖更好用。对照网址略加分析之后,15行代码一气呵成。

import requests
from bs4 import BeautifulSoup

k = 0 # 兰亭序全文共324字,k为文中每个字的序号,0表示全文图片
for i in range(65): # 共有65页面需要抓取
    if i:
        url = 'http://www.yac8.com/news/10725_%d.html'%(i+1)
    else:
        url = 'http://www.yac8.com/news/10725.html'
    print('正在处理第%d页。。。'%(i+1))
    soup = BeautifulSoup(requests.get(url).text, 'lxml')
    for img in soup.find(id='newsContent').find_all('img'):
        with open('res/%03d.jpg'%k, 'wb') as fp:
            fp.write(requests.get(img['src']).content)
        k += 1
print('处理完毕!')

这段代码使用requests模块下载网页,使用BeautifulSoup模块解析图片路径;针对每一个图片路径再次使用requests.get()下载图片内容并保存为本地文件。下载的325张图片(包括1张兰亭序全文图片)保存在和脚本文件同级的res文件夹内,因此,运行之前要确保该路径存在。

在这里插入图片描述
如果想要打印成册,就需要消除背景色。下面的代码,将res路径下的324张图片每6个字拼合为1页,共计54页。处理过程将PIL对象转为NumPy数组,一是为了快速消除背景色,二是可以直接使用OpenCV的膨胀和腐蚀函数。

from PIL import Image
import cv2
import numpy as np

for i in range(54):
    bg = Image.new('RGB', (2200,3300), color=(255,255,255))
    for j in range(6):
        k = i*6 + j
        im = Image.open('res/%03d.jpg'%(k+1))
        w, h = im.size
        wn, hn = 1100, int(h*w/1100)
        im = im.resize((wn, hn))
        d = (hn-1100)//2
        im_box = im.crop((0, d, 1100, d+1100))
        bg.paste(im_box, ((1-j//3)*1100, (j%3)*1100))
    
    im_arr = np.array(bg)
    im_arr = np.where(im_arr<80, im_arr, 255)
    
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5,5))
    im_arr = cv2.dilate(im_arr, kernel) # 膨胀
    im_arr = cv2.erode(im_arr, kernel) # 腐蚀
    
    cv2.imwrite('out/%02d.jpg'%(i+1), im_arr)
    print('Page%d Ok'%(i+1))

运行这段代码后,out文件夹下生成了54张拼合后的图片,可以直接打印装订了。

在这里插入图片描述

最后附上兰亭序全文共计324字,如需使用文字代替数字为图片命名,上面的代码稍加改动即可,请各位自行修改。

永和九年岁在癸丑暮春之初会于会稽山阴之兰亭修禊事也群贤毕至少长咸集此地有崇山峻岭茂林修竹又有清流激湍映带左右引以为流觞曲水列坐其次虽无丝竹管弦之盛一觞一咏亦足以畅叙幽情是日也天朗气清惠风和畅仰观宇宙之大俯察品类之盛所以游目骋怀足以极视听之娱信可乐也夫人之相与俯仰一世或取诸怀抱悟言一室之内或因寄所托放浪形骸之外虽趣舍万殊静躁不同当其欣于所遇暂得于己快然自足不知老之将至及其所之既倦情随事迁感慨系之矣向之所欣俯仰之间已为陈迹犹不能不以之兴怀况修短随化终期于尽古人云死生亦大矣岂不痛哉每览昔人兴感之由若合一契未尝不临文嗟悼不能喻之于怀固知一死生为虚诞齐彭殇为妄作后之视今亦犹今之视昔悲夫故列叙时人录其所述虽世殊事异所以兴怀其致一也后之览者亦将有感于斯文


声明:本文引用未经授权的网站资源,仅出于研究学习Python编程语言之目的,并无任何恶意和盈利。如有侵权,函告即删。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页
实付 15.20元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值