我最近开始使用 Tweepy,尤其是 api.user_timeline。我的脚本从用户那里下载了一系列推文,并将 Tweepy 状态调用中可用的各种详细信息的大部分打印到文本文件中。我的问题是从 twitter 中反转微小的 url。我在这个网站上的一个答案中读到,解决它的正确方法是在 Twitter 实体中使用“expanded_url”命令,这就是我所做的。这是我的代码:
import tweepy
import codecs
auth = tweepy.OAuthHandler("xxx", "xxx")
auth.set_access_token("yyy", "yyy")
with codecs.open("file.txt", encoding='utf-8', mode='w+') as f:
api = tweepy.API(auth)
for status in tweepy.Cursor(api.user_timeline, "xxx", include_entities=True).items():
...
# Extracting info from the entities
for hashtag in status.entities['hashtags']:
f.write(format(hashtag['text']))
for url in status.entities['urls']:
f.write(format(url['expanded_url']))
问题是这些扩展的 url 并不总是我需要的完整 url。例如,一条推文的代码给了我一个结果“ http://goo.gl/sOH17n ”,它仍然隐藏了文章来自的真实网站。我有一段代码,它为我提供了带有 urllib2 的完整 url,但是当我将它们两个放在一起时,我得到一个'HTTPError: HTTP Error 403: Forbidden'。这是我的试用版,它不起作用(它总是与之前的部件集成,所以不通过身份验证不是问题)
import urllib2
for url in status.entities['urls']:
expanded_url=url['expanded_url']
fullurl= urllib2.urlopen(expanded_url)
f.write(format(fullurl.url))
所以,我的问题是,有没有办法在 Tweepy 中找到真正完整的网址?如果没有,为什么与 urllib2 的集成不起作用?如果这个问题看起来微不足道,我深表歉意,但我似乎无法摆脱这个问题,而且 tweepy 的文档很粗略。
提前感谢您的任何回答!