如何修复离线网页中损坏的相对链接?
-
26-09-2019 - |
题
我编写了一个简单的 Python 脚本来下载网页以供离线查看。问题是相关链接已损坏。因此,脱机文件“c: emp\webpage.html”具有 href="index.aspx",但在浏览器中打开时,它解析为“file:///C:/temp/index.aspx”而不是“http://myorinalwebsite.com/index.aspx".
所以我想我必须修改我的脚本来修复每个相关链接,以便它指向原始网站。有更容易的方法吗?如果没有,谁有一些可以做到这一点的示例Python代码?我是一个 Python 新手,所以任何指点都将不胜感激。
谢谢。
解决方案
如果您只想让相对链接引用该网站,只需在头部添加一个基本标签:
<base href="http://myoriginalwebsite.com/" />
其他提示
lxml 让这个脑死亡变得简单!
>>> import lxml.html, urllib
>>> url = 'http://www.google.com/'
>>> e = lxml.html.parse(urllib.urlopen(url))
>>> e.xpath('//a/@href')[-4:]
['/intl/en/ads/', '/services/', '/intl/en/about.html', '/intl/en/privacy.html']
>>> e.getroot().make_links_absolute()
>>> e.xpath('//a/@href')[-4:]
['http://www.google.com/intl/en/ads/', 'http://www.google.com/services/', 'http://www.google.com/intl/en/about.html', 'http://www.google.com/intl/en/privacy.html']
从那里您可以将 DOM 作为文件写入磁盘。
所以你想检查所有以 http://
但任何您不想附加的内容 http://myoriginalwebsite.com
到字符串的前面,然后测试连接?
听起来很容易。或者你遇到的问题是 python 代码正确吗?
不隶属于 StackOverflow