批量保存网页

文章目录

    • 背景
    • 工具
      • Selenium
      • geckodriver
      • PyUserInput
      • 工具下载和安装
    • 代码
    • 测试
    • 总结

背景

之前已经写了 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 fileinputdef 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+1print('第 ' + 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/143013.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

批量获取/打开链接 - 实践

1.应用场景 批量操作, 打开链接. 2.学习/操作 思路 获取超链接标签, 然后使用批量打开每个超链接, 从而不需要手动一个个打开链接 完善 建议用脚本实现, 然后写一个定时脚本[服务器上],每天定时执行. 环境 Chrome浏览器/其他浏览器也可以 PHP 7.3 nginx 1.15/1.16 方式一 2.1…

批量保存网页为单个网页文件

有时候,总有会遇到一些奇怪的需求,各种搜索都找不到答案,本次记录批量保存网页到单个网页文件。 使用背景: 只想简单的解决问题,不涉及编程 网页带格式,将网页存为PDF格式会变 量太大,一个个的处理太累 涉及…

【数据安全-02】AI打假利器数字水印,及java+opencv实现

AIGC 的火爆引燃了数字水印,说实话数字水印并不是一项新的技术,但是这时候某些公司拿出来宣传一下特别应景,相应股票蹭蹭地涨。数字水印是什么呢,顾名思义,和我们在pdf中打的水印作用差不多,起到明确版权、…

python自动打开网页_python 自动批量打开网页的示例

python 自动批量打开网页的示例 如下所示: import webbrowser import codecs import time with open("test.txt") as fp: for ebayno in fp: url http://ebay.com/itm/ebayno.strip() time.sleep(1) #打开间隔时间 webbrowser.open(url) #打开网…

【bat批处理】手把手教你批量打开软件、文件、网页等

【bat批处理】打开软件、文件等 0- 前言1- start 命令用法1.0 注释1.1 start 命令说明1.2 启动软件1.3 打开文件1.4 打开文件夹1.5 打开网页 2-实战2.0 怎么创建bat批处理文件2.1 打开软件、文件、网页2.2 微信多开2.3 定时关机2.4 取消定时关机2.5 显示桌面图标 3 小结 0- 前言…

认识Vue中组件利器-插槽Slot-案例介绍

一. 插槽的使用 1.1. 认识插槽slot 在开发中,我们会经常封装一个个可复用的组件: 前面我们会通过props传递给组件一些数据,让组件来进行展示; 但是为了让这个组件具备更强的通用性,我们不能将组件中的内容限制为固定…

IDEA汉化后转回英文,只要三步

如果你觉得本文对你有帮助,麻烦动动手指顶一下

IntelliJ IDEA全界面汉化(官方插件)

现在很多人用IntelliJ IDEA写java代码,但小白很苦恼,看不懂,今天来分享一下怎么汉化 因为现在IDEA官方是支持汉化了,所以我们直接使用IDEA的插件 4. 下载Chinese汉化包(第二个) 重启IDEA就可以看到页面都变…

IDEA汉化及如何改回英文界面版本

相信很多小伙伴们刚接触IDEA时,看到一堆英文界面不知道如何下手,今天教大家一个插件直接将界面中文版本,以及改回英文版本。建议点赞收藏哈! 一:汉化 1.打开左侧file,按箭头所示2.搜索Chinese,安装内存大的…

【IntelliJ IDEA】如何安装汉化插件

我使用的是2020.1的版本 汉化方式: 打开idea 点击settings 选择plugins 在marketplace 搜索 Chinese install之后 点击restart ide即可 汉化后的样子: 用不习惯也可以打开plugins 点开 installed将插件移除

IDEA汉化之2021版本

打开最新版本的IDEA后在浏览器直接进入Chinese (Simplified) Language Pack / 中文语言包 - IntelliJ IDEs | JetBrains,点击右上角,IDEA中会出现弹窗,直接起飞!

IDEA汉化教程(一分钟即可)

Idea汉化教程(简单,一分钟即可) 步骤 打开idea点击左上角的File,然后点击Settings(如下图) 进去后点击Plugins,然后点击Marketplace,然后再搜索框搜索 chinese 然后搜索出东西&…

idea中文版插件

IDEA怎么设置成中文? 首先点击左上角的File-Settings 进入设置 进入Settings后点击Plugins,在搜索框输入Chinese language pack,点击install安装插件 下载成功后,点击installed,找到下载的汉化插件,点击Restart IDE&…

IntelliJ IDEA中文汉化教程

在找IDEA汉化的过程中,看了好多都没有说第二步的小问题(问题虽小,但是也还是会有困扰的人,比如我,所以写了一篇可以解决这个问题的小文章,记录一下处理问题的结果,也希望能帮助到跟我一样的被困…

Intellij IDEA设置中文界面(汉化)

因为现在IDEA官方是支持汉化了,所以我们可以直接使用IDEA的插件来设置。这简直是我们这些英语小白的福音啊啊(想起以前刚刚上手满屏英文,一头两大...它认识我我不认识它,这是神马感jio!!!&#…

IDEA汉化

1、下载 resources_cn.jar (下载路径:http://www.downza.cn/soft/211722.html) 2、打开idea安装目录,打开lib文件夹 3、将 resources_cn.jar 文件复制到lib,重启idea就OK了 4、如果汉化后发现设置(Setting&…

2020版 IDEA怎样汉化与怎样切换为英化

害,容我先吐槽吐槽,我这大半天时间用来解决IDEA2017版本占CPU高达80%的问题,还又时不时来个未响应。然鹅–就是各种办法都试了,结果一打开,还是原样子。没办法,我卸载了2017版本,直接安装了2020…

IDEA 2020.1官网汉化插件安装

idea 终于更新了2020.1版本(推荐使用2020的版本),新增了好多的特性,官方也终于支持了中文语言包,但是有些兄弟下载后在插件市场无法找到官方的汉化包等问题,请安装下面操作即可: 1、去IDEA插件…

idea汉化教程

1.同样的,第一步,打开软件 2.进入软件后依次点击file→settings 3.接着点击plugins 4.然后点击Marketplace(在线搜索插件) 5.在搜索框输入chinese(看到这个名字,知道是啥了吧),找到C…

如何汉化IDEA

汉化IDEA 距离上次写博客已经过去很久了,期间一直在写前端页面,最近也写后端打开了IDEA发现界面全是英语有些看不懂,想必有人也会跟我一样,接下来我给大家分享下如何汉化IDEA。 1、首先我们百度搜索“Github”,进入官…