2012-10-19 3 views
0

이제 웹 사이트 A의 http 응답이 있습니다.이 http 응답의 모든 링크 URL을 웹 사이트 B의 URL로 변경해야 사용자가 브라우저에서이 http 응답을받을 때 링크가 클릭되고 웹 사이트 B에 A.HTTP 응답에서 링크 URL을 변경하는 방법은 무엇입니까?

나는 파이썬과 django를 사용하고 있습니다. 패키지 또는 도구가이 트릭을 수행 할 수 있습니까?

미리 감사드립니다.

+1

당신은'urlparse'을 시도 했습니까? – ronak

+0

내가 뭘하려고하는지 http 응답을 구문 분석하고 그것에있는 모든 링크 URL을 수정합니다. urlparse는 다른 구성 요소에 대한 단일 URL을 구문 분석합니다. – Peters

+0

구문 분석 된 항목을 변경하고 필요에 따라 새 항목을 생성하는 이유는 무엇입니까 – ronak

답변

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에서 돌아 오는 컨텐츠의 종류, 링크를 인식 할 수있는 방법, 그리고 어떻게 변경하고 싶은지에 달려 있습니다.

0

웹 서버로 Apache를 사용하는 경우 http://mod-replace.sourceforge.net/과 같은 응답의 텍스트를 모듈로 대체 할 수 있습니다. 이것은 모든 요청에 ​​대해 perl이나 python을 호출하는 것보다 더 합리적인 것처럼 보입니다. 그러나 당신은 efect가있는 링크뿐만 아니라 모든 텍스트가 대체 될 수 있다는 것을 알아야합니다. 그러므로 이것은 매우 더러운 해결책이 될 것입니다.

+0

예, 말씀 드렸다시피, 다른 링크에 영향을 미칩니다. 나는 이것을 가질 여유가 없다. 그러나 어떤 방식 으로든 감사합니다. – Peters

관련 문제