如何使用 wget linux 命令镜像维基百科页面?

How to mirror Wikipedia pages with wget linux command?

我想用 wget Linux 命令镜像维基百科页面 我使用了这个命令

wget --mirror -p --convert-links -P ./folder-mirror /https://en.wikipedia.org/wiki/Portal:Contents/A–Z_index

但我只得到这个文件 robots.txt

Robot exclusion is on by default in wget 以防止人们成为混蛋并递归吞噬他人的网页及其带宽。

您可以在 .wgetrc 文件中将其关闭,或者使用 wget 的 -e 开关,例如:-e robots=off

这并不是说维基百科没有进一步的安全措施来确保您的 wget 不会递归下载所有内容,但它会阻止 wget 遵守 robots.txt 和 meta。

如果您仍然碰壁,那么也许可以修改用户代理或类似的东西。

不要那样做。它会给维基百科网络服务器带来巨大的负载,您的 IP 将被封锁。

如果您想要维基百科的镜像,请从 https://dumps.wikimedia.org/ 下载其数据库的转储。截至目前,英文 wiki 的最新完整转储可在以下位置获得:

https://dumps.wikimedia.org/enwiki/20160407/

如果您只需要来自特定页面的数据,请考虑使用 the MediaWiki API

嗯,这里的人已经semi-helpful提到了如何处理robots.txt。您还需要适当地设置您的用户代理。似乎有一种正式的方法可以通过使用 use-agent 字符串让维基媒体知道你是谁,这将防止你因为一次拉太多而被列入黑名单。正如他们提到的那样 - 用请求淹没服务器对任何人都不利,并且可能导致您的 IP 被禁止。

我的用例可能与您的不同:我只是想获取单个 .html 文件 到目前为止,我有这个,它模拟了最新的 Firefox:

wget -e robots=off --span-hosts --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0" https://en.wikipedia.org/wiki/Wikipedia:Stackexchange_and_Reddit

但不幸的是,这是输出:

--2022-04-10 04:09:15-- https://en.wikipedia.org/wiki/Wikipedia:Stackexchange_and_Reddit 正在解析 en.wikipedia.org (en.wikipedia.org)... 2620:0:863:ed1a::1, 198.35.26.96 连接到 en.wikipedia.org (en.wikipedia.org)|2620:0:863:ed1a::1|:443... 失败:权限被拒绝。 连接到 en.wikipedia.org (en.wikipedia.org)|198.35.26.96|:443... 失败:权限被拒绝。 正在重试。

至少,这是朝着正确方向迈出的又一步。我应该提一下,围绕 uset-agent“鲶鱼”这个话题似乎存在某种禁忌。 None 我浏览过的网站以某种 pre-packaged 的方式提供了所需的信息。我猜那是因为他们可能会收到删除通知或类似通知。我会尽快再试一次,如果接近目标,我会编辑我的回复。