此代码打开一个Twitter监听器,搜索条件位于变量upgrades_str中。有些搜索有效,有些则没有。我将AMZN添加到升级列表中只是为了确保有一个经常使用的术语,因为这是使用开放的Twitter流,而不是搜索现有的推文。
下面,我认为我们只需要检查数字2和4.
我在Windows 10上使用Python 3.5.2 :: Anaconda 4.0.0(64位)。
变量搜索
搜索:upgrades_str:['AMZN','SWK','AIQUY','SFUN','DOOR'] =返回推文,例如'我厌倦了人'
< / LI>使用以下方法搜索:upgrades_str:['$ AMZN','$ SWK','$ AIQUY','$ SFUN','$ DOOR'] =返回推文,如'芝加哥到南佛罗里达州。嘻哈生活'。 此搜索是我希望的工作。
明确搜索
通过使用显式字符串替换变量'upgrades_str'进行搜索:['AMZN','SWK','AIQUY','SFUN','DOOR'] =返回'在两次进入后,我终于想出了如何在瑞典锁门。这个至少有一个搜索词“门”。
使用显式字符串替换变量'upgrades_str'进行搜索:['$ AMZN','$ SWK','$ AIQUY','$ SFUN','$ DOOR'] =返回'$ AMZN $ WFM $ KR $ REG $ KIM:亚马逊的Whole Foods购买使购物中心处于危险之中。 因此显式调用有效,但不是相同的变量。
明确搜索['$ AMZN'] =返回一条好的推文:'FANG设置下周非常好!在4.36增加了$ googl jun23 970c avg。 $ FB $ AMZN'。
明确地搜索['cool']返回'我不敢相信我有这么酷的枕头!'
import tweepy
import dataset
from textblob import TextBlob
from sqlalchemy.exc import ProgrammingError
import json
db = dataset.connect('sqlite:///tweets.db')
class StreamListener(tweepy.StreamListener):
def on_status(self, status):
if status.retweeted:
return
description = status.user.description
loc = status.user.location
text = status.text
coords = status.coordinates
geo = status.geo
name = status.user.screen_name
user_created = status.user.created_at
followers = status.user.followers_count
id_str = status.id_str
created = status.created_at
retweets = status.retweet_count
bg_color = status.user.profile_background_color
blob = TextBlob(text)
sent = blob.sentiment
if geo is not None:
geo = json.dumps(geo)
if coords is not None:
coords = json.dumps(coords)
table = db['tweets']
try:
table.insert(dict(
user_description=description,
user_location=loc,
coordinates=coords,
text=text,
geo=geo,
user_name=name,
user_created=user_created,
user_followers=followers,
id_str=id_str,
created=created,
retweet_count=retweets,
user_bg_color=bg_color,
polarity=sent.polarity,
subjectivity=sent.subjectivity,
))
except ProgrammingError as err:
print(err)
def on_error(self, status_code):
if status_code == 420:
return False
access_token = 'token'
access_token_secret = 'tokensecret'
consumer_key = 'consumerkey'
consumer_secret = 'consumersecret'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
stream_listener = StreamListener()
stream = tweepy.Stream(auth=api.auth, listener=stream_listener)
stream.filter(track=upgrades_str, languages=['en'])
答案 0 :(得分:0)
以下是答案,以防将来有人遇到问题:&#34;请注意,标点符号不被视为#hashtag或@mention的一部分,因此包含标点符号的跟踪词不会匹配#hashtags或@mentions。&#34;来自:https://dev.twitter.com/streaming/overview/request-parameters#track
对于多个术语,从列表转换的字符串需要更改为[&#39; term1,term2&#39;]。只需删除撇号和空格:
upgrades_str = re.sub('[\' \[\]]', '', upgrades_str)
upgrades_str = '[\''+format(upgrades_str)+'\']'