是否可以强制 urllib 只获取普通 html,而不是图像、脚本等?

Is it possible to force urllib to just fetch plain html, not images, scripts, etc?

我正在使用 urllib 从网络上抓取数据。我正在尝试获取一个网站的不同页面,这些页面完全使用相同的模板、图像和 JS 代码(例如不同的用户配置文件)。问题是模板图像和脚本太重了,我不需要它们。我唯一关心的是页面的普通 HTML

有什么方法可以强制 urllib 仅获取普通 HTML 或至少从 python 代码执行良好的缓存机制?

好吧,您可以使用 HEAD HTTP 方法询问给定 URL 的 return 类型。因此,您将获得响应的所有实际 headers,但没有响应 body。然后你应该分析响应 headers 并决定是否需要保存响应并使用顺序 GET/POST 方法重复请求。

要执行 HEAD 请求,您可以使用 httplib

实际上,urllib 只会下载 HTML,无需任何干预。

要下载其他资源(图像、脚本、样式表),您必须解析下载的 HTML 并自行下载。

因此,要回答您的问题,您无需执行任何特殊操作。只需这样做:

html = urllib.urlopen(url).read()