В Python, как я могу проверить, действительно ли две разные ссылки указывают на одну и ту же страницу? - PullRequest
3 голосов
/ 03 июня 2011

Например, эти 2 ссылки указывают на одно и то же местоположение:

http://www.independent.co.uk/life-style/gadgets-and-tech/news/chinese-blamed-for-gmail-hacking-2292113.html

http://www.independent.co.uk/life-style/gadgets-and-tech/news/2292113.html

Какя проверю это на питоне?

Ответы [ 2 ]

12 голосов
/ 03 июня 2011

Звоните geturl() по результату urllib2.urlopen(). geturl() "возвращает URL-адрес полученного ресурса, обычно используемый для определения того, был ли выполнен редирект.

Например:

#!/usr/bin/env python
# coding: utf-8

import urllib2

url1 = 'http://www.independent.co.uk/life-style/gadgets-and-tech/news/chinese-blamed-for-gmail-hacking-2292113.html'
url2 = 'http://www.independent.co.uk/life-style/gadgets-and-tech/news/2292113.html'

for url in [url1, url2]:
    result = urllib2.urlopen(url)
    print result.geturl()

Вывод:

http://www.independent.co.uk/life-style/gadgets-and-tech/news/chinese-blamed-for-gmail-hacking-2292113.html
http://www.independent.co.uk/life-style/gadgets-and-tech/news/chinese-blamed-for-gmail-hacking-2292113.html
2 голосов
/ 03 июня 2011

Очевидно, что это невозможно отличить только по URL.

Вы можете получить содержимое и сравнить его, но тогда я думаю, что вам придется использовать умный критерий, чтобы решить, когда две страницы одинаковы - скажем, например, что обе указывают на одну и ту же статью, но случайная реклама бывает другой, или связанные статьи меняются в зависимости от других факторов.

Создайте свою программу таким образом, чтобы критерий соответствия страниц легко заменялся, даже динамически, и попробуйте, пока не найдете тот, который не выходит из строя - например, для газетной страницы вы можете попытаться найти заголовки.

...