Python下载一个完整的网页(包括CSS)

标签 python download scrapy

我有一个用 Scrapy 和 Splash 运行的脚本,它从一个站点中提取各种数据,但现在我也在尝试找到一种方法来制作每个页面的离线副本。

我用 Scrapy 尝试了以下方法:

def parse(self, response):
    filename = response.url.split("/")[-1] + '.html'
    with open(filename, 'wb') as f:
        f.write(response.body)

还有 Urllib:

def parse(self, response):
    url = response.url
    file_name = 'aaa.html'
    with urllib.request.urlopen(url) as response, open(file_name, 'wb') as out_file:
        shutil.copyfileobj(response, out_file)

两者都可以正常工作,但只能将 HTML 下载到文件中。我需要完整的页面(包括 CSS)——那么有什么方法可以做到这一点,类似于在使用谷歌浏览器手动保存网站时复制保存为“网页,完整”?

我怀疑像 Selenium 这样的东西可以,但我猜它对我的应用程序来说太慢了(它需要 100 个,有时是 1000 个 URL)。谢谢。

最佳答案

您可以使用 BeautifulSoup 或 Scrapy 浏览下载的 html 并使用 a、src 标签提取内容

更具体地说,例如 css 将在以下标签中

<link rel="stylesheet" type="text/css" href="">

然后下载href内容中的文件你的编码需要复杂很多

关于Python下载一个完整的网页(包括CSS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45193668/

相关文章:

java - Android Webview 应用程序无法下载图像

javascript - 下载即时创建的 img

python - 如何用西里尔语解码类似 JSON 的字符串?

python - Scrapy - 获取 Javascript 变量的值

python - 带有 python 列表的循环引用

python - 在字典中查找符合特定条件的集合

python - 如何获取每行的百分比并可视化分类数据

python - 我想使用 python 替换 XLM 的值

download - 是否有适用于 Solaris 10 的 wget 命令

python - Scrapy/OpenSSL 抓取 HTTPS 站点 : AttributeError: 'module' object has no attribute 'SSL_CTX_set_session_id_context'