我有一个用 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/