2017-04-04 22 views
0

對不起,如果這已被解決,但我找不到任何先前的解決方案。我使用熊貓從URL中提取域並計算結果。有沒有一種方法來分配一個布爾值取決於URL是否是短鏈接,如bit.ly和goo.gl?可以使用urllib.urlopen來驗證鏈接是否是短鏈接?使用Python檢測短url使用

這裏是僞的Python是希望說明什麼,我試圖做的:

if urllib.urlopen(df['url']) != df['url']: 
    df['short_url'] = True 
else: 
    df['short_url'] = False 
+0

但是,在這裏你分配一個布爾值**列**? –

+0

對 - 我會修改問題以澄清 –

+0

您可能需要點擊url並查看您是否獲得3xx狀態。即使那樣,我不認爲你可以確定它是一個縮短的網址。其他選項也許保留一個已知的URL縮短服務的列表。 –

回答

1

基本上是一個「短網址」是一個門面網址只是重定向到最終網址。所以你可以使用urllib2的getUrl方法。

的getURL() - 返回檢索到的資源,常用來 的URL確定是否重定向之後

import urllib2 
original_url = 'http://someshorturl/5b2su2' 
response = urllib2.urlopen(original_url) 
# final_url != original_url if redirected 
final_url = response.geturl() 
# response_code will be 302 for redirects 
response_code = response.getcode() 

if response_code == 302: 
    # redirected so this may a short url 
else: 
    # this is not a short url 

當然是有缺陷這一點,因爲任何URL可以重定向...不僅僅是來自url縮短服務的短url(如goo.gl或tinyrl)。

如果您確實需要100%確定,那麼您可能需要對已知的URL縮短服務域進行url的正則表達式測試。您可能需要結合使用以滿足您的要求。

+0

謝謝,卡爾文。好點 - 我沒有考慮到其他類型的鏈接可以重定向。不過,這給了我一些工作。 –