python 截屏,合成 pdf

    这篇文章接着使用订阅号获取微信公众号历史文章看(微信可查看原文链接)。一般爬虫都选择去分析 html 源码,从中选择对我们有用的元素进行保存,但是这样很容易就把作者写文章时的排版给扔掉了,而且有的文章本身就使用了一些图片加以说明,为了保证原汁原味的阅读体验,尝试了一下直接截屏保存的效果还不错。

网页截屏保存

    selenium 库中 webdriver 已经提供了截屏功能,代码如下所示,但是使用之后发现,它仅仅是截取当前屏幕显示的内容,而很多文章一屏是没法显示全的,就需要日常已经习以为常的截长图操作了。

driver.save_screenshot(FILENAME)

    在网上找到了一个简单的方法,只需要把 chromedriver 换成 PhantomJS (网络自行下载)就可以了,代码和上面是一样的。

def screen_shot(article_list):
    br = webdriver.PhantomJS(executable_path=PHANTOMJS_PATH)
    br.maximize_window()
    for article in article_list:
        br.get(article.get("link"))
        time.sleep(3)
        br.save_screenshot(PATH + article.get("title") + ".png")
    br.close()
    print("screenshot finishied")
将图片合成 pdf

    把文章截屏下来之后,发现体验还是不好,图片太多了而且没有规律,脑袋里的第一想法就是把图片组织成一本书不就方便了嘛,于是就用了下面的一小段代码。实际运用的时,如果文件数量很多,这段代码的速度貌似很慢。

def imgs_to_pdf():
    pdf = FPDF()
    pdf.add_page()
    for img in os.listdir(IMAGES_PATH):
        pdf.image(PATH+img, w=PDF_WIDTH, h=PDF_HEIGHT)
    pdf.output(FILENAME)
两点感悟

    闲来做完上面的小功能后,突然有一点失落,虽然用专业知识给自己的生活提供了一点点方便,但却并没有什么成就感,因为 python 封装的太好了,基本上你要干的事都有人已经写好了相关的库,你直接调用就行了,这给自己带来的影响就是:编程全变成了功能的堆砌,是个学编程的都能做,对原理完全没有深入。不禁想起了之前转载的关于“算法工程师”一词的理解,国庆期间我朋友圈有两个人很特殊,都没有发什么游客照,一个大神在阅读 unix 源码,另一个在阅读毛选,觉得如果不是富二代、权二代,人与人之间的差距就是这么出来的。

    英语学好真的很重要,在查找如何将图片拼接成 pdf 时,用中文搜索了很多,基本上不同平台博客都是同一段代码,而且连错误都一样,浪费时间;后来用 python for images to pdf作为关键字进行搜索,出来第一个结果就是想要的结果,而且代码很简洁。国内的博主写的好的太少了,联想到国内还有付费包装 github 的服务,简直恶心死了,不知道提供服务和购买服务的人怎么有脸交易。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Guanngxu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值