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