如何在网站上找到所有(可能是相对的)网址?
How to find all (possibly relative) urls on a website?
作为编程练习,我正在制作一个 python 小工具来在本地下载整个网站。为了能够在本地浏览网站,我需要将所有 URL 翻译成相关的 URL。否则,资源文件 (.js, .css) 将从原始网站下载,而不是使用本地下载的版本。由于我需要重写 URLs,我想我也可以更改文件层次结构。这就引出了这个稍微更笼统的问题:
如何找到网站中的所有 URL? 基于 http://domain.tld/path
的正则表达式不会被删除,因为 href
属性可能包含相对 URL.
到目前为止,我已经确定了以下内容:
HTML
href=<url>
(引用)
src=<url>
(引用)
srcset=<list>
action=<url>
(引用)
background=<url>
(引用)
CSS
url('<url>')
或url(<url>)
(可引可不引)
@import(<url>)
JS
- 对于 JS,我认为不存在完美的解决方案。使用正则表达式查找完整的 URLs 似乎是唯一的方法(例如
http://example.tld/path
)
[编辑] 另请参阅 this post 以了解一些用于查找 url 的正则表达式。不完整,因为那里没有使用 srcset
。
也许是一个好的开始?
mech-dump --links '
检索:
- 邮寄到
- http(s) 个链接
- 图片
此命令随perl module: WWW::Mechanize
一起安装
基于 Debian 的发行版的软件包 libwww-mechanize-perl
作为编程练习,我正在制作一个 python 小工具来在本地下载整个网站。为了能够在本地浏览网站,我需要将所有 URL 翻译成相关的 URL。否则,资源文件 (.js, .css) 将从原始网站下载,而不是使用本地下载的版本。由于我需要重写 URLs,我想我也可以更改文件层次结构。这就引出了这个稍微更笼统的问题:
如何找到网站中的所有 URL? 基于 http://domain.tld/path
的正则表达式不会被删除,因为 href
属性可能包含相对 URL.
到目前为止,我已经确定了以下内容:
HTML
href=<url>
(引用)src=<url>
(引用)srcset=<list>
action=<url>
(引用)background=<url>
(引用)
CSS
url('<url>')
或url(<url>)
(可引可不引)@import(<url>)
JS
- 对于 JS,我认为不存在完美的解决方案。使用正则表达式查找完整的 URLs 似乎是唯一的方法(例如
http://example.tld/path
)
[编辑] 另请参阅 this post 以了解一些用于查找 url 的正则表达式。不完整,因为那里没有使用 srcset
。
也许是一个好的开始?
mech-dump --links '
检索:
- 邮寄到
- http(s) 个链接
- 图片
此命令随perl module: WWW::Mechanize
一起安装基于 Debian 的发行版的软件包 libwww-mechanize-perl