我正在使用Twitter API从名为Twython的Python库中提取推文中的URL。我使用home_timeline API并查看entities
来搜索网址。
通常,entities
中的链接是正确的。但是,在某些情况下,链接是错误的。例如,这是来自帐户@WWF-Philippines
的推文:
当我将光标悬停在突出显示的链接上时,它会在状态栏上显示shortened_url1
(我不能放在此处,因为Stackoverflow不允许)。如果我点击该链接,则会打开一个外部article。但是,如果我使用Twitter API查询相应的推文,这里是我得到的推文:
Need a guide to properly enjoy the great outdoors while minimizing human impact? This list is for you!\xe2\x80\xa6 shortened_url2
您可以看到此处的shortened_url2与悬停光标时显示的真实链接(shortened_url1)不同。如果我按照shortened_url2,它会打开相同的推文。 entities
部分中的链接与此错误链接(shortened_url2)相同。
那么Twitter API有什么问题? 感谢。
答案 0 :(得分:1)
我认为您正在查看实体的旧版本。
Twitter状态为 - https://twitter.com/WWF_Philippines/status/869027117652033536
从API调用https://api.twitter.com/1.1/statuses/show/869027117652033536.json
会为我们提供以下实体:
"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]
}]
},
请注意顶部显示"truncated": true,
?
最近,Twitter更改了推文的显示方式以及它们在API中的表现方式 - 请参阅https://dev.twitter.com/overview/api/upcoming-changes-to-tweets
您需要在查询结尾添加?tweet_mode=extended
。那会让你回来:
"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]
}],
其中包含您想要的数据。