美文网首页python热爱者
小伙神发明,通过Python自动截屏合成PDF!

小伙神发明,通过Python自动截屏合成PDF!

作者: 48e0a32026ae | 来源:发表于2018-10-08 18:54 被阅读0次

    一般爬虫都选择去分析 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 封装的太好了,基本上你要干的事都有人已经写好了相关的库,你直接调用就行了,这给自己带来的影响就是:编程全变成了功能的堆砌,是个学编程的都能做,对原理完全没有深入。

    相关文章

      网友评论

        本文标题:小伙神发明,通过Python自动截屏合成PDF!

        本文链接:https://www.haomeiwen.com/subject/ilwjaftx.html