0

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

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

谢谢。

4

3 回答 3

5

如果您只想让您的相对链接引用该网站,只需在头部添加一个基本标签:

<base href="http://myoriginalwebsite.com/" />
于 2010-08-31T18:24:19.920 回答
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 作为文件写入磁盘。

于 2010-08-31T18:31:55.537 回答
0

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

听起来很容易。还是您遇到问题的python代码正确?

于 2010-08-31T18:22:20.293 回答