fou*_*ing 13
只需查看推文的文本,看看它是否以"RT"开头,实际上并不是一个强大的解决方案.你需要决定你将转推什么,因为它不是很明确.Twitter API 文档解释说,推文文本中带有"RT"的推文并非正式转推.
有时,人们会在推文开头键入RT,表明他们正在重新发布其他人的内容.这不是官方Twitter命令或功能,但表示他们正在引用其他用户的推文.
如果您按照"官方"定义进行操作,那么您希望过滤推文,如果它们具有True转发属性的值,就像这样:
if not tweet['retweeted']:
# do something with standard tweets
Run Code Online (Sandbox Code Playgroud)
如果你想要更具包容性,包括'非官方'重新推文,你应该检查子串"RT @"的字符串,而不仅仅是它是否以'RT'开头,因为前者更清洁,更快,消除更多边缘情况,推文以"RT"开头,但不是转推(有很多数据,我确信这是可能的).这是一些代码:
if not tweet['retweeted'] and 'RT @' not in tweet['text']:
# do something with standard tweets
Run Code Online (Sandbox Code Playgroud)
后一个条件采用你的集合中的推文子集,这些推文是常规推文,并且与你的集合中的推文子集交叉,这些推文在推文文本中没有"RT @",留下了推文,这些推文可能是普通的推文.
是的,有可能的方法可以做到这一点,其中之一是检查推文的文本是否以 开头RT,为此我们可以轻松地在字符串上使用方法,为此您需要更改流类中方法.startswith()的代码on_data(),可以这样做:
class TwitterStreamListener(tweepy.StreamListener):
def on_data(self, data):
# Twitter returns data in JSON format - we need to decode it first
decoded = json.loads(data)
if not decoded[`text`].startswith('RT'):
#Do processing here
print decoded['text'].encode('ascii', 'ignore')
return True
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10202 次 |
| 最近记录: |