如何修复脱机网页中断开的相关链接?

2024-04-26 14:22:33 发布

您现在位置:Python中文网/ 问答频道 /正文

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

所以我想我必须修改我的脚本来修复每个相关链接,这样它就可以指向原来的网站了。有更简单的方法吗?如果没有,有没有人有一些可以做到这一点的示例Python代码?我是一个Python新手,所以如果有任何建议,我将不胜感激。在

谢谢。在


Tags: 文件脚本webhttp网页链接html浏览器
3条回答

如果您只想让您的相关链接指向网站,只需在头部添加一个基标记:

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

所以您想检查所有以http://开头的链接,但是任何不想将http://myoriginalwebsite.com附加到字符串前面的链接,然后测试连接?在

听起来很简单。或者你遇到的问题是python代码本身吗?在

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

相关问题 更多 >