如何抓取缩短的URL并获取python中的实际域?

时间:2014-04-09 00:46:42

标签: python url

我正在接收来自Twitter API的推文,很多时候推文都包含缩短的网址,因此获取实际网址非常重要。

例如,对于http://t.co/3hwXTqmktt http://www.animalpolitico.com/2014/04/304037/#axzz2yETrXxui我需要获取 animalpolitico.com

最重要的是获取域名,所以如果我有例如:

http://news.example.com 

http://blog.example.com/eeaWdada5das

http://example.com/ewdaD585Jz

我为每个人获得了 example.com

我想python的任何此类 curl 都会有所帮助。我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:4)

您可能需要查看requests库。

>>> r = requests.get('http://t.co/3hwXTqmktt')
>>> requests.url
>>> r.url
u'http://www.animalpolitico.com/2014/04/304037/#axzz2yETrXxui'

现在您已获得该网址,您可以使用urlparse获取所需的网址。

答案 1 :(得分:2)

为了从网址中提取域名,除urlparse外,您还可以使用tldextract模块:

>>> import tldextract
>>> urls = ['http://news.example.com', 
            'http://blog.example.com/eeaWdada5das', 
            'http://example.com/ewdaD585Jz']
>>> for url in urls:
...     data = tldextract.extract(url)
...     print '{0}.{1}'.format(data.domain, data.suffix)
... 
example.com
example.com
example.com

UPD(com.mx的示例):

>>> data = tldextract.extract('http://example.com.mx')
>>> print '{0}.{1}'.format(data.domain, data.suffix)
example.com.mx

答案 2 :(得分:1)

这特别适用于Twitter和t.co链接,但通过API检索的推文对象具有附加到它们的所谓实体。您将在这些实体中找到包含在推文中的所有网址的原始扩展版本。有关详细信息,请参阅:https://dev.twitter.com/docs/entities