如何修复离线网页中破碎的相对链接?

时间:2010-08-31 18:18:30

标签: python html hyperlink offline-browsing

我写了一个简单的Python脚本来下载网页以供离线观看。问题是相关链接被破坏了。所以离线文件“c:\ temp \ webpage.html”有一个href =“index.aspx”,但是当在浏览器中打开时它解析为“file:/// C:/temp/index.aspx”而不是“ http://myorginalwebsite.com/index.aspx”。

所以我想我必须修改我的脚本来修复每个相关链接,以便它指向原始网站。有没有更简单的方法?如果没有,任何人都有一些示例Python代码可以做到这一点?我是一个Python新手所以任何指针都会受到赞赏。

感谢。

3 个答案:

答案 0 :(得分:5)

如果您只是希望您的相关链接引用该网站,只需在头部添加基本标记:

<base href="http://myoriginalwebsite.com/" />

答案 1 :(得分:1)

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作为文件写到磁盘上。

答案 2 :(得分:0)

所以你想检查所有以http://开头的链接,但是你想要将http://myoriginalwebsite.com追加到字符串的前面,然后测试连接吗?

听起来很容易。或者它是你遇到问题的python代码吗?