现在我有来自网站A的http响应,我需要将此http响应中的所有链接网址更改为网站B的网址,这样当用户在浏览器中获得此http响应时,点击链接,它们将是针对网站B而不是A.
我正在使用python和django。是否有包或工具可以做到这一点?
提前致谢。
答案 0 :(得分:0)
如果您使用Apache作为Web服务器,您可以使用模块替换响应中的Text,如http://mod-replace.sourceforge.net/。这似乎比为每个请求调用perl或python更合理。但是你必须要知道所有文本都可能被替换 - 不仅仅是具有效果的链接。因此,这将是一个非常脏的解决方案。
答案 1 :(得分:0)
根据您从网站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获取的内容类型,如何识别其中的链接以及您希望如何更改它们。