批量保存网页

背景

之前已经写了 2 篇文章:

备份 CSDN 博客(上)

备份 CSDN 博客(下)

但是效果都不怎么好,其实还有一种简单粗暴的方法,就是用浏览器下载,批量下载。

工具

我是 Ubuntu 的操作系统,自带火狐浏览器。要下载 3 个工具:

  1. selenium
  2. geckodriver
  3. PyUserInput

Selenium

Selenium 是一个用于 Web应用程序测试的工具。Selenium 测试直接运行在浏览器中,浏览器自动按照脚本代码做出单击、输入、验证等操作,就像真正的用户在操作一样。

简而言之,我们可以利用 Selenium 来打开浏览器,输入网址,等待页面加载,点击按钮等一系列操作。一句话解释:Selenium 可以控制浏览器,做任何想做的事情。

geckodriver

仓库是 https://github.com/mozilla/geckodriver

geckodriver 实现了 WebDriver 协议描述的 HTTP API, selenium 用 geckodriver 与 Firefox 通信。geckodriver 充当本地端和远程端之间的代理。

PyUserInput

仓库是 https://github.com/SavinaRoja/PyUserInput/

一个用于在 python 中控制鼠标和键盘的模块。


除了上面 3 个,可能还需要安装 pip3,总之搜搜教程,该装啥装啥。

列一下我的版本:

selenium:3.141.0

火狐浏览器:85.0.1

geckodriver:0.22.0(0.29.0?)

python:3.5.2

工具下载和安装

这部分我不熟,都是参考网上的文章。

selenium:略,网上教程很多

geckodriver

下载:

$ wget https://github.com/mozilla/geckodriver/releases/download/v0.22.0/geckodriver-v0.22.0-linux64.tar.gz

然后解压:

$ tar zxvf geckodriver-v0.22.0-linux64.tar.gz

$ geckodriver --version

在这里插入图片描述

最后是移动:

$ mv geckodriver /usr/local/bin

PyUserInput

安装:

$ pip3 install PyUserInput

代码

下面的代码保存为 auto_save.py

from selenium import webdriver
from pykeyboard import PyKeyboard
import time
import fileinput

def save_page(url):	
	br.get(url)
	k = PyKeyboard()
	k.press_key(k.control_key)
	k.tap_key('s')
	k.release_key(k.control_key)
	time.sleep(2) # 非常重要
	k.tap_key(k.home_key)#定位到开始
	time.sleep(1)
	k.type_string('/mnt/hgfs/vm_share/blog_save/')# 保存路径
	time.sleep(1)
	k.tap_key(k.enter_key)
	time.sleep(2)


br = webdriver.Firefox()

i = 0
for line in fileinput.input():
	# 去掉末尾的换行
	url = line.replace('\n', '')
	print('process ' + url + '...')
	save_page(url)
	i = i+1
	print('第 ' + str(i) + ' 个下载完毕')

br.close()

第 7 行:传参网址,等待网页加载

8-11:模拟按键 ctrl + s

12:这里的延时很重要,因为 ctrl + s 需要时间

按键 ctrl + s 后是这样:

在这里插入图片描述

此时需要输入保存路径

可以按【home】键,光标会移动到最开始

第 15 行:输入路径

在这里插入图片描述

第 17 行:输入回车

测试

$ python3 auto_save.py url.txt

url.txt 是之前获取到的博客 URL 列表,可以参考
备份 CSDN 博客(上)

下载完的效果:
在这里插入图片描述

总结

本方法的优点:通用性好,不挑网站,也不怕网站改版;下载的网页比较完整,图片也有;

但是也有很多缺点:

  1. 费时间,要加载整个网页,然后输入路径,再保存,至少也要六七秒钟

  2. 在我测试的时候,偶尔发现会卡住,应该是 selenium 卡住了

  3. 我发现有的网页没有下载,所以下载完成后要检查一下,数目够不够

针对 2 和 3,还没有找到解决方法;大概搜了一下,似乎有点思路,把搜到的文章列一下。

【1】Python selenium —— 一定要会用selenium的等待,三种等待方式解读

https://huilansame.github.io/huilansame.github.io/archivers/sleep-implicitlywait-wait

【2】selenium中关于停止加载的几种方法

https://blog.csdn.net/supramolecular/article/details/82386564

【3】解决 selenium 加载网页阻塞的问题

https://blog.csdn.net/anguuan/article/details/104685099

网页图片保存能手 9.8.5.0 网页图片保存能手是一款网页图片保存免费软件。它可以非常方便快速批量保存网页上的多张图片。 本软件还可以自动批量保存网络相册图片。 通常要保存网页上的图片,需要一张张地用鼠标右键另存为,这样做费时费力。 如果以保存整个网页的格式保存下来则不管什么大小的图片包括不想要的图片也会保存下来。 使用网页图片保存能手可以让你迅速过滤筛选出自己选要的图片,点击一次保存网页上的数十张甚至上百张图片就一块保存到指定的文件夹,还可以生成网页图片信息文件,添加图片文字说明注释。 本软件适用于IE浏览器,傲游浏览器,世界之窗,绿色浏览器, 腾讯TT浏览器,MiniIE,GoSurf,Thooe随E浏览器,360浏览器,糖果浏览器,28winning,极速浏览器,火星浏览器,中易浏览器,搜狗浏览器。 软件特色: 1)可以直接在IE浏览器工具栏上点击图标启动 2)可以对网页图片方便地进行选取,包括图片大小筛选和手工点击筛选,只保存想要的图片 3)可以将多个网页上的图片合并保存(在界面上将 合并 选项打上勾再摘图) 4)保存数十张甚至上百张图片通常只需要点击“保存”按纽1次。 5)操作方法简单,浏览网页看到想保存的图片,在IE工具栏启动本程序后再点击保存即可。 6)4.0版本支持IE 7.0,要摘录多个网页标签中的某一个网页的图片,只需将网页标签切换到该网页再摘录即可。 7)4.6修改了在IE工具栏不显示图标的问题 8)4.7增加了按序号保存图片功能。可以指定图片文件的前缀。 9)4.8解决了与web迅雷同时运行时出错的问题 10)5.0增加显示图片网址,贴图代码,便于在论坛发贴贴图。可以显示/隐藏图片宽高。可以设置图片网址过滤条件。 11)6.0可以处理图片外部链接,通过小图来获取大图。增加自动获取图片,包括自动点击取图,定时间隔取图,多网页合并取图。 可以将图片文件与信息打包成zip文件。 12)6.5可以在网页上通过鼠标右键来调用,支持腾讯TT浏览器,MiniIE,GoSurf,Thooe随E浏览器。 13)6.6支持360安全浏览器。修改了图片类型自动识别和本地网页横排显示图片的问题 14)7.0修改了定时间隔取图错误,增强了自动抓图功能,软件可以智能升级。 15)7.2增加日期时间+序号选项和特殊图片处理选项 16)7.4兼容vista和傲游2.1.3奥运专用版本 17)7.5增加通过网址转换来进行小图取大图 18)7.6增强功能界面添加图片宽高设置,取图(alt+G)和存盘(alt+S) 19)7.7恢复了图片分类保存,修改了某些存盘错误 20)7.8支持最新IE8 beta2浏览器 21)7.9支持通过键盘按键换图图集的自动获取 22)8.0增加了取图存盘切换操作热键设置,修改了界面与一些程序错误 23)8.2支持增强功能配置文件的保存与读取,支持全屏截图,修正一些错误 24)8.3支持网页背景图片的获取 25)8.4修改8.3第一次使用没有设置存盘目录不能存盘的问题 26)8.5增强网址生成器, 支持360浏览器的超强安全模式,自动点击回退模式和每次存盘都询问保存目录选项 27)8.6增加根据jscript,onclick,链接代码自动取图 28)8.7增加了快速预览模式和历史记录,解决图片重复保存问题 29)8.8提供外部浏览器接口,增强网页链接查看器和网址替换功能 30)8.9支持糖果浏览器和28winning浏览器,强化多网页取图功能 31)9.0增加模拟鼠标点击取图,提供第三方下载软件批量下载接口 32)9.1支持极速浏览器,强化了鼠标模拟点击功能 33)9.2支持深层框架网页的取图。 34)9.3支持火星浏览器,中易浏览器,傲游2.5.1 35)9.4支持本地网页图片的转存,可以升级到测试版 36)9.5支持搜狗浏览器,修改预览区图片用滚轮缩放后不能正常保存的问题 37)9.6兼容傲游2.5.2测试版,允许获取重复图片,增加取图完成提示,修改了一个固定点击错误。附带的缓存图片查看器升级到1.5版本,可以按网址或访问时间排序,可以保存非图片类文件。 38)9.7可以对IE多选项卡同时取图,支持世界之窗3.0 39)9.7.8支持TT4.6.1,傲游2.5.2,360浏览器3.0 40)9.8.2支持取图后存盘,存盘退出,存盘关机,标题 过滤,保存图片宽高信息等等 41)9.8.3支持鼠标滚轮模拟,自动点击组合,非缓存图片的保存 42)9.8.5修改了窗口最大化和随机字符存盘错误 本安装包为通过安装包。支持的浏览器都可以通过鼠标右键来调用。 对于傲游,世界之窗,绿色浏览器,360安全浏览器的用户如果想以扩展包的形式安装,可以在软件介绍网页(http://pay500.net/picsaver.htm)下载专用的扩展安装包。腾讯TT浏览器,MiniIE,GoSurf,Thooe随E浏览器等不支持扩展的浏览器,可以直接在网页上用鼠标右键来调用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值