2017-06-02 2 views
0

Ich extrahiere URLs aus Tweets mithilfe von Twitter-APIs mit einer Python-Bibliothek namens Twython. Ich verwende die API und suche unter entities nach URLs. Normalerweise sind die Links in entities korrekt. In einigen Fällen sind die Links jedoch falsch. Zum Beispiel ist dies ein Tweet von Konto @WWF-Philippines: enter image description hereFalsche URLs im Bereich "Entitäten" des Objekts "Tweet"

Wenn ich den Mauszeiger über den markierten Link schweben, es zeigt shortened_url1 (ich kann hier nicht setzen, weil Stackoverflow nicht erlaubt) in der Statusleiste. Wenn ich auf den Link klicke, öffnet sich ein externer article. Allerdings, wenn ich Twitter-API verwenden, um die entsprechenden tweet abzufragen, hier ist der Tweet ich:

Need a guide to properly enjoy the great outdoors while minimizing human impact? This list is for you!\xe2\x80\xa6 shortened_url2 

Sie die shortened_url2 sehen hier unterscheidet sich von dem wahren Link (shortened_url1) angezeigt, wenn der Cursor schwebt. Wenn ich dem curred_url2 folge, öffnet es den gleichen Tweet. Die Verbindung im entities Teil ist die gleiche mit dieser falschen Verbindung (curred_url2).

Also was ist los mit Twitter APIs hier? Danke.

+0

Wie wäre es mit dem Posten von Code, den Sie geschrieben haben? – elena

Antwort

1

Ich denke, Sie suchen die alte Version der Entitäten.

Der Twitter-Status ist - https://twitter.com/WWF_Philippines/status/869027117652033536

Aufruf https://api.twitter.com/1.1/statuses/show/869027117652033536.json aus der API uns folgende Einheiten gibt:

"truncated": true, 
"entities": { 
    "hashtags": [], 
    "symbols": [], 
    "user_mentions": [], 
    "urls": [{ 
     "url": "https:\/\/t.co\/UatUzmm9re", 
     "expanded_url": "https:\/\/twitter.com\/i\/web\/status\/869027117652033536", 
     "display_url": "twitter.com\/i\/web\/status\/8\u2026", 
     "indices": [104, 127] 
    }] 
}, 

Hinweis an der Spitze sagt, es "truncated": true,?

Zuletzt geändert Twitter, wie es zeigt Tweets und wie sie in der API vertreten sind - siehe https://dev.twitter.com/overview/api/upcoming-changes-to-tweets

Sie müssen ?tweet_mode=extended bis zum Ende Ihrer Abfrage hinzuzufügen. Das bringt Sie zurück:

"truncated": false, 
"display_text_range": [0, 126], 
"entities": { 
    "hashtags": [], 
    "symbols": [], 
    "user_mentions": [], 
    "urls": [{ 
     "url": "https:\/\/t.co\/BgKxmFzrQc", 
     "expanded_url": "http:\/\/bit.ly\/7LNTPrinciples", 
     "display_url": "bit.ly\/7LNTPrinciples", 
     "indices": [103, 126] 
    }], 

Welche enthält die Daten, die Sie möchten.

+0

Danke, es könnte die Ursache sein. Twython unterstützt den Parameter 'tweet_mode' jedoch noch nicht. – lenhhoxung

+0

Es tut. Siehe https://github.com/ryanmcgrath/twython/issues/430 - Sie müssen etwas wie "tweet = twitter.show_status (id = tweet_id, tweet_mode = 'extended") 'hinzufügen –

Verwandte Themen