Twitter API,使用美元符号搜索

时间:2017-06-16 19:44:50

标签: python-3.x twitter windows-10 anaconda

此代码打开一个Twitter监听器,搜索条件位于变量upgrades_str中。有些搜索有效,有些则没有。我将AMZN添加到升级列表中只是为了确保有一个经常使用的术语,因为这是使用开放的Twitter流,而不是搜索现有的推文。

下面,我认为我们只需要检查数字2和4.

我在Windows 10上使用Python 3.5.2 :: Anaconda 4.0.0(64位)。

变量搜索

  1. 搜索:upgrades_str:['AMZN','SWK','AIQUY','SFUN','DOOR'] =返回推文,例如'我厌倦了人'

    < / LI>
  2. 使用以下方法搜索:upgrades_str:['$ AMZN','$ SWK','$ AIQUY','$ SFUN','$ DOOR'] =返回推文,如'芝加哥到南佛罗里达州。嘻哈生活'。 此搜索是我希望的工作。

  3. 明确搜索

    1. 通过使用显式字符串替换变量'upgrades_str'进行搜索:['AMZN','SWK','AIQUY','SFUN','DOOR'] =返回'在两次进入后,我终于想出了如何在瑞典锁门。这个至少有一个搜索词“门”。

    2. 使用显式字符串替换变量'upgrades_str'进行搜索:['$ AMZN','$ SWK','$ AIQUY','$ SFUN','$ DOOR'] =返回'$ AMZN $ WFM $ KR $ REG $ KIM:亚马逊的Whole Foods购买使购物中心处于危险之中。 因此显式调用有效,但不是相同的变量。

    3. 明确搜索['$ AMZN'] =返回一条好的推文:'FANG设置下周非常好!在4.36增加了$ googl jun23 970c avg。 $ FB $ AMZN'。

    4. 明确地搜索['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'])
      

1 个答案:

答案 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)+'\']'