2012-12-01 69 views
13

我正在瀏覽我們的網站分析,並加載了一些t.co網址,這些網址是我們正在進行的促銷活動的推薦人。我試圖找出是否有辦法通過Twitter API或其他方式將它們轉回原始推文。我似乎無法找到一個好辦法做到這一點,但是,有嗎?如何將t.co網址轉換爲原始Tweet?

+0

退房http://www.find-t.co/ –

+0

這find-t.co站點不再解析(也不是記錄,因爲它得到了關機)。然而,沒關係,因爲我更新了自己的答案,儘可能靠近解決方案,因爲您無需付費Twitter即可獲得更多的數據分析訪問權限。 – Ben

回答

1

這是不可能與Twitter提供的公共API。

如果我理解正確的話,你想找到一個鳴叫原來嵌有特定t.co鏈接。即t.co遵循時解決您的網站,而不是Twitter的鳴叫。

-4

當t.co轉發指向tweet時,它會轉到該tweet的網頁,該頁面的HTML將包含規範URL。

獲取此信息的難看方式是使用wget或curl來抓取HTML目標,該目標將包含您的初始推文的URL。

更好的方法是使用Python模塊Requests(你需要先安裝這個模塊)。下面是一個簡單的命令行腳本,將做到這一點:

#!/usr/bin/env python 

import requests 

shorturl = raw_input("Enter the shortened URL in its entirety: ") 
r = requests.get(shorturl) 

print(""" 
The shortened URL forwards to: 

    %s 
""" % r.url) 

該代碼將在任何這些URL縮短服務,而不僅僅是Twitter的t.co網站的工作。

我使用Python 2.7進行了測試,但有可能上面的代碼可以與Python 3.x一起使用。無論哪種方式,要求是你的朋友,詳見文件:

http://docs.python-requests.org/en/latest/index.html

重定向和歷史部分介紹了這個例子。

我不知道如何通過Twitter API執行此操作,並且如果所有網址縮短都是自動執行的,則可能無法執行此操作。仍然基於API的解決方案僅適用於t.co地址,而上述代碼可用於任何其他縮短的URL或重定向到其他位置的任何URL(例如HTTP 301或302響應代碼)。

編輯(比從未更好一點):使用上述找到t.co forward實際指向的位置後,將會有三種或四種可能的結果。最常見的是,這是OP認爲他們都是什麼,縮短了網址粘貼到推文,公平地說,這是他們大多數。

其他可能性是它回到推特本身,這通常只會出現一些相當長的推文(不知道頻率增加多少,字符限制也會增加)。以及轉發到獨立於推文作者的狀態URL的狀態的URL,這對於嵌入式媒體(圖像和視頻)通常是這種情況;並轉發到推文或轉推的推文網址。

鑑於OP的原始方案,這些都不內部Twitter的用法都不應當看到,只有「正常」的轉發關注這裏。現在在twitter.com上搜索t.co地址,我們什麼也得不到,無論使用什麼樣的組合。

但是,搜索目標地址,然而,像這個答案開始時腳本顯示的腳本是另一回事。這將產生可公開訪問併發布該鏈接的每條推文的結果。然而,存在一些缺點,包括:

  1. 搜索結果將包括使用其他轉發服務的推文。
  2. 無法判斷鏈接到該URL的所有推文是否生成了相同的t.co地址。
  3. 如果沒有,沒有辦法,看看哪個t.co前鋒是由鳴叫利用。

儘管如此,與完整的Web服務器引用者日誌一起,可能會進一步縮小範圍。假設引薦來源網址報告推文的網址,而不僅僅是twitter.com。然而,這更可能是通過在點擊鏈接的人這樣做(即是他們只看到鳴叫在流或過他們擴大它足以顯示其完整URL)的方式來確定。

我懷疑推薦人日誌的有效性將會在智能手機和平板電腦上零星出現,並且可能會減少,因爲使用的應用程序不太可能以這種方式擴展推文,以便將該數據提供給第三方網站。

#!/usr/bin/env python3 

import requests 
import urllib.parse 

shorturl = input("Enter the shortened URL in its entirety: ") 
r0 = requests.get(shorturl, verify=True) 
t0 = "https://twitter.com/search?f=tweets&q=" 
t1 = urllib.parse.quote_plus(r0.url) 
r1 = requests.get("{0}{1}".format(t0, t1), verify=True) 

# the results will be in r1.content 
# there may be some benefit from cutting the http:// or 
# https:// from r0.url before creating the quoted string in t1. 

然而,這是一樣好,沒有支付Twitter的增強數據訪問。

+0

附錄:如果您需要檢查一個HTTPS站點重定向然後換6號線這樣的:R = requests.get(fwdurl,驗證= FALSE) – Ben

+0

增編補遺:在最近版本的請求模塊的變化會產生警告消息爲verify = False,但自去年以來證書檢查已得到改進。因此,現在將第6行更改爲'r = requests.get(fwdurl,verify = True)',這對HTTP和HTTPS都很好。此外,作爲唯一的答案和獲得賞金使得某人冷靜熱鬧。 – Ben

+0

這將返回縮短鏈接轉發的URL,但OP會要求一種方法來返回創建縮短鏈接的推文的URL。 – Glacials

0

直接在Google Analytics中直接提供Social networks然後Trackbacks菜單的引用您的網頁的推文列表。