Twitter search API

Twitter crawler 与sina 微博类似,使用twitter api之前,首先要有twitter的账号,在twitter developer中创建应用(https://apps.twitter.com/app/new)。

创建成功之后可以获得应用的信息,包括Consumer key和Consumer secret。并generate access token,将这四个数据保存下来,

接下来可以借助twitter api 进行twitter 抓取,现有的twitter api的python版本很多,这里主要介绍tweepy 以及python-twitter。

1. python-twitter

安装:在cmd 窗口中使用pip 命令:pip install python-twitter

安装成功后,可以运行如下代码:

import twitter
  
import optparse
import sys
  
def print_safe(string):
    """
    Format a string for safe printing
    """
    return string.encode('cp437', 'xmlcharrefreplace')
  
def print_tweet(tweet):
    """
    Format and print `tweet`.
    """
    print "@" + print_safe( tweet.GetUser().GetScreenName() ) +  
    ": " + print_safe(tweet.GetText())
  
def search(search_term):
    """
    Print recent tweets containing `search_term`.
    """
    api = twitter.Api()
    tweets = api.GetSearch(search_term)
    for tweet in tweets:
        print_tweet(tweet)
  
def trending_topics():
    """
    Print the currently trending topics.
    """
    api = twitter.Api()
    trending_topics = api.GetTrendsCurrent()
    for topic in trending_topics:
        print print_safe(topic.name)
  
def user_tweets(username):
    """
    Print recent tweets by `username`.
    """
    api = twitter.Api()
    user_tweets = api.GetUserTimeline(screen_name=username)
    for tweet in user_tweets:
        print_tweet(tweet)
  
def trending_tweets():
    """
    Print tweets for all the trending topics.
    """
    api = twitter.Api()
  
    trending_topics = api.GetTrendsCurrent()
    tweets = []
    # To add some variety, let's round-robin through the trending
    # topics, displaying a tweet from each until we run out of tweets.
    for topic in trending_topics:
        tweets.append((topic, api.GetSearch(topic.name)))
  
    while True:
        for topic, topic_tweets in tweets:
            if topic_tweets:
                print_tweet(topic_tweets.pop())
            else:
                return
  
def main(args):
    parser = optparse.OptionParser("""Usage: %prog [-s <search term> | -t | -u <username>]""")
  
    parser.add_option("-s", "--search",
                      type="string",
                      action="store",
                      dest="search_term",
                      default=None,
                      help="Display tweets containing a particular string.")
    parser.add_option("-t", "--trending-topics",
                      action="store_true",
                      dest="trending_topics",
                      default=False,
                      help="Display the trending topics.")
    parser.add_option("-u", "--user",
                      type="string",
                      action="store",
                      dest="username",
                      default=None,
                      help="Display tweets for a particular public user.")
    parser.add_option("-w", "--trending-tweets",
                      action="store_true",
                      dest="trending_tweets",
                      default=None,
                      help="Display the tweets from trending topics.")
  
    (opts, args) = parser.parse_args(args)
  
    if opts.search_term:
        search(opts.search_term)
    elif opts.trending_topics:
        trending_topics()
    elif opts.username:
        user_tweets(opts.username)
    elif opts.trending_tweets:
        trending_tweets()
  
if __name__ == "__main__":
    main(sys.argv[1:])
  

 PS:有时会遇到程序报错,缺少module,可能系统安装过python-twitter,但是版本较低,因此可以首先卸载twitter-python 再重新安装,卸载命令为:pip uninstall python-twitter。

2.tweepy:

首先tweepy下载:https://github.com/tweepy/tweepy

原文地址:https://www.cnblogs.com/tec-vegetables/p/4533582.html