如何将静态网页打包下载到本地

前言

关于如何将静态网页中的html、图片、样式表和JavaScript文件下载到本地

有以下几种方案

使用wget

假设你要下载的静态网站链接为https://baidu.com,可以使用以下命令来下载:

1
wget --recursive --no-clobber --page-requisites --html-extension --convert-links http://example.com

参数解释:

  • --recursive:递归下载,将链接的页面上的链接一并下载
  • --no-clobber:不重复下载已下载过的文件
  • --page-requisites:下载页面的所有资源,包括图片、样式表和 JavaScript 文件
  • --html-extension:将所有的页面文件的后缀名设置为.html
  • --convert-links:将页面引用的链接转换为本地路径
    执行这个命令后,wget 会将整个网站下载到当前目录下的一个名为 example.com 的文件夹中

使用wget下载的方式可以将整站的静态网页和相对路径资源打包下载到本地 有点类似于整站克隆

以登录状态进行下载

有些网站的页面需要进行登录后才能正常显示 如果我们要实现保持登录状态进行页面的下载 那么就需要使用cookies

首先 我们需要登录获取cookies 然后保存在本地文本中:

1
wget --save-cookies=cookies.txt --keep-session-cookies --post-data 'username=your_username&password=your_password&other_field=value' https://yourwebsite.com/login

这里的表单信息需要替换成目标网站的值

cookies.txt内容格式如下:

1
2
3
4
5
6
7
8
9
# HTTP Cookie File
# Generated by Wget on 2024-05-06 14:37:15.
# Edit at your own risk.



域名 路径 安全 有效期 接收时间 发送时间 协议 名称 值

www.example.com / FALSE 0 Mon, 01-Jan-1970 00:00:00 GMT Mon, 01-Jan-1970 00:00:00 GMT HTTP myCookie myValue

有了cookies后 接下来使用--load-cookies进行下载

1
wget --load-cookies=cookies.txt --keep-session-cookies --recursive --no-clobber --page-requisites --html-extension --convert-links https://example.com

假如用户登录并不是以表单的形式 可能是第三方登录 或者PHP网站 那么我们可以借助python中的selenium来模拟浏览器登录获取cookies

python3代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

# -*- coding:utf-8 -*-
####################################
#
# 获取网站cookies并保存到本地txt文档中
#
####################################
from selenium import webdriver
import time
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--disable-gpu') #如果不加这个选项,有时定位会出现问题
browser = webdriver.Chrome(options=chrome_options)


def getCookies():
browser.get('https://example.com')
# 延迟20秒,让你有充分的时间去填写你的登录信息
time.sleep(20)
cookies=browser.get_cookies()
print(cookies)
# 创建一个名为cookies的txt文件
with open('cookies.txt', 'w') as f:
# 将cookies保存为json格式
# 将cookies保存为wget可识别的格式
for cookie in cookies:
cookie_str = f"{cookie['name']}={cookie['value']};"
f.write(f"{cookie_str}\n")


getCookies()

或者使用chrome插件获取并导出cookies 该插件名为Get cookies.txt Clean

image-20240506134658233

使用Chrome插件

  • Save All Resources : 该扩展程序可一键下载所有资源文件并保留文件夹结构

    插件安装后 打开开发者界面ResourcesSaver选项卡即可根据自己的需求进行资源下载:

    image-20240428132540012

    注意: 这个插件只能下载当前页面的Html页面和相关资源

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

0%