如何检测这两个URL是否驱动到同一站点?

时间:2014-06-20 11:00:51

标签: python ruby-on-rails ruby

如何检测这两个网址是否可以驱动到相同的网站(因此它们是相同的网址),而无需使用网页抓取来阅读内容?

例如:我需要检查(使用GET请求)

两个网址都是同一网站,但我该如何检测?

我更喜欢Ruby或Python,但我可以使用任何语言。

修改

另一个案例,如http://www.inprovo.com/ &安培; http://www.inprovo.com/default.asp。此网站有一些随机横幅在重新加载时会发生变化,因此每次重新加载时HTML都不一样。

谢谢!

3 个答案:

答案 0 :(得分:0)

Python

使用urlparse库。

from urlparse import urlparse
>>> urlparse('http://www.n-economia.com/index.asp').netloc
'www.n-economia.com'
>>> urlparse('http://www.n-economia.com/').netloc
'www.n-economia.com'
>>> urlparse('http://www.n-economia.com/index.asp').netloc == urlparse('http://www.n-economia.com/').netloc
True 

答案 1 :(得分:0)

你可以在python中使用urllib2。它的方法urlopen返回一个响应对象。您可以使用read()方法检查响应的内容。如果两个相同的响应具有相同的内容,那么它们是相同的。

import urllib2
page1 = urllib2.urlopen('http://www.n-economia.com/index.asp')
page2 = urllib2.urlopen('http://www.n-economia.com/')
if page1.read() == page2.read(): print 'same site'
else: print 'different'
编辑:也许我误解了你的帖子,但我认为你需要检查两个网址是否链接到同一页面,即它们具有相同的内容。如果情况并非如此,我道歉。

答案 2 :(得分:0)

最后,我使用受Tf-idf启发的@larsmans answer算法得到它:

<强>引用: Tf-idf(和类似的文本转换)在Python包Gensim和scikit-learn中实现。在后一种方案中,计算余弦相似度就像

一样简单
from sklearn.feature_extraction.text import TfidfVectorizer

documents = [open(f) for f in text_files]
tfidf = TfidfVectorizer().fit_transform(documents)
# no need to normalize, since Vectorizer will return normalized tf-idf
pairwise_similarity = tfidf * tfidf.T

或者,如果文件是简单的字符串,

>>> vect = TfidfVectorizer(min_df=1)
>>> tfidf = vect.fit_transform(["I'd like an apple",
...                             "An apple a day keeps the doctor away",
...                             "Never compare an apple to an orange",
...                             "I prefer scikit-learn to Orange"])
>>> (tfidf * tfidf.T).A
array([[ 1.        ,  0.25082859,  0.39482963,  0.        ],
       [ 0.25082859,  1.        ,  0.22057609,  0.        ],
       [ 0.39482963,  0.22057609,  1.        ,  0.26264139],
       [ 0.        ,  0.        ,  0.26264139,  1.        ]])

几个有用的链接: