15行代码抓取兰亭序全文单字高清字帖

2个月前 ( 03-09 ) 298阅读 0评论

【CSDN 编者按】用你熟悉的代码就能获取高清字帖,是不是撞到你怀里了呢,一起来了解一下吧。

作者 | 天元浪子 责编 | 欧阳姝黎

出品 | CSDN博客

近日网购上瘾,狂买至肉疼,最后连一本打折后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张图片保存在和脚本文件同级的 res 文件夹内,因此,运行之前要确保该路径存在。

如果想要打印成册,就需要消除背景色。下面的代码,将 res 路径下的234张图片每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字,如需使用文字代替数字为图片命名,上面的代码稍加改动即可,请各位自行修改。

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

原文链接:https://blog.csdn.net/xufive/article/details/114530480

文章版权声明:除非注明,否则均为七默网原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (暂无评论,298人围观)

还没有评论,来说两句吧...

取消
支付宝二维码
支付宝二维码
微信二维码