Google Buzz のデータを大量にスクレイピングしたところですが、どの Buzz 投稿が同じニュース記事を参照しているかを知りたいです。問題は、これらの投稿内のリンクの多くが URL 短縮機能によって変更されているため、多数の異なる短縮 URL が実際にはすべて同じニュース記事を指している可能性があるということです。
数百万の投稿がある場合、最も効率的な方法(できればPython)は何でしょうか?
- URL が短縮 URL であるかどうかを検出する (多数の URL 短縮サービスのいずれか、または少なくとも最大のサービスの短縮 URL)
- 短縮 URL の「宛先」、つまり短縮 URL の長い元のバージョンを見つけます。
URL 短縮サービスが厳格なリクエスト レート制限を課しているかどうか知っている人はいませんか? これを 100/秒 (すべて同じ IP アドレスから) に抑えた場合、問題が発生すると思いますか?
アップデートと暫定的な解決策回答から次のような簡単な解決策が導き出されました。
import urllib2
response = urllib2.urlopen("http://bit.ly/AoifeMcL_ID3") # Some shortened url
url_destination = response.url
それでおしまい!
ベストアンサー1
短縮 URL の宛先を取得する最も簡単な方法は、 を使用することですurllib
。短縮 URL が有効 (応答コード 200) であれば、URL が返されます。
>>> import urllib
>>> resp = urllib.urlopen('http://bit.ly/bcFOko')
>>> resp.getcode()
200
>>> resp.url
'http://mrdoob.com/lab/javascript/harmony/'
以上です!