下载HTML页面及其内容

62 投票
4 回答
125931 浏览
提问于 2025-04-15 16:33

Python有没有办法可以把一个完整的网页和它的内容(比如图片、样式表等)下载到本地文件夹里?然后再更新本地的HTML文件,让它可以从本地获取这些内容。

4 个回答

11

你需要的是一个镜像工具。如果你想用Python的话,PyPI上有一个叫做 spider.py 的工具,但我没有用过。可能还有其他更好的工具,不过我不太清楚。我自己用的是'wget',它可以支持 获取CSS和图片。这工具可能正好符合你的需求(引用自 手册

只获取一个HTML页面,但要确保页面显示所需的所有元素,比如内嵌图片和外部样式表,也要一并下载。同时确保下载的页面中引用的链接也是下载过的。

wget -p --convert-links http://www.server.com/dir/page.html
15

你可以使用urlib这个库:

import urllib.request

opener = urllib.request.FancyURLopener({})
url = "http://stackoverflow.com/"
f = opener.open(url)
content = f.read()
44

你可以使用urllib模块来下载单个网址的内容,但这样做只会返回数据。它不会解析HTML,也不会自动下载像CSS文件和图片这样的东西。

如果你想下载整个页面,就需要解析HTML,找到其他需要下载的内容。你可以使用像Beautiful Soup这样的工具来解析你获取的HTML。

这个问题里有一些示例代码,正是用来做这些事情的。

撰写回答