3

现在我有一个来自网站 A 的 http 响应,我需要将这个 http 响应中的所有链接 url 更改为网站 B 的 url,这样当用户在浏览器中获得这个 http 响应时,点击链接,他们将被定向到网站B 不是 A。

我正在使用python和django。有没有包或工具可以做到这一点?

提前致谢。

4

2 回答 2

1

根据您从网站 A 获得的响应的性质、您想用它做什么,以及替换是否有效的重要性,有几种可能的做事方式。我不是 100% 清楚你的情况和你想要达到的目标。

如果来自网站 A 的响应中的链接以网站 A 的主机名开头,那么只需将响应作为字符串获取,然后在将响应response = response.replace('http://website-a.com', 'http://website-b.com')呈现给用户之前执行此操作。

如果响应是 HTML,并且链接是相对的,最简单的代码解决方案可能是使用lxml.rewrite_links(请参阅http://lxml.de/lxmlhtml.html#working-with-links)。我怀疑这就是你要找的。

如果您还有其他情况,那么我不知道什么是合适的。也许是一个正则表达式。也许是您自己设计的自定义算法。这取决于您从网站 A 返回的内容类型、您如何识别其中的链接以及您希望如何更改它们。

于 2012-10-19T20:24:30.007 回答
0

如果您使用 Apache 作为 Web 服务器,您可以使用一个模块来替换响应中的文本,例如http://mod-replace.sourceforge.net/。这似乎比为每个请求调用 perl 或 python 更合理。但是你必须知道所有的文本都可能被替换——不仅仅是那些有效果的链接。因此,这将是一个非常肮脏的解决方案。

于 2012-10-19T18:28:58.920 回答