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

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

网页截屏保存

如果你感觉学不会?莫慌,小编推荐大家加入群,

前面548中间377后面875,群里有志同道合的小伙伴,

互帮互助,还可以拿到许多视频教程!

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181008A1MUHZ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券