学习数据获取的时候,看了很多的帖子,但是自己还未成功,现在根据师姐的指导,记录下自己的学习过程,避免忘记。
1.在Twitter上新建应用
网址:https://apps.twitter.com/app/new

讯享网
创建好之后的网址(记录下,自己总是创建完就找不到了):https://apps.twitter.com/app/
创建好了就可以获取应用的信息,包括Consumer key和Consumer secret。并generate access token,将这四个数据保存下来。

2.Twitter本地项目的搭建
接下来可以借助twitter api 进行twitter 抓取,现有的twitter api的python版本很多,这里主要介绍tweepy 以及python-twitter。
在cmd中,通过pip install tweepy/python-twitter的命令,进行库的安装。
(如果电脑上之前装过,但是版本过早,可以先pip uninstall 在重新安装)
代码片段:
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:])
讯享网
3.代码学习
(1)optparse模块的使用
optparse模块主要用来为脚本传递命令参数,采用预先定义好的选项来解析命令行参数。
首先需要引入optparser模块,然后执行初始化,实例化一个OptionParser对象(可以带参,也可以不带参数),再为命令行添加选项,示例:
讯享网from optparse import OptionParser usage="show something usefull -- for example: how to use this program" parser = OptionParser(usage) #带参的话会把参数变量的内容作为帮助信息输出 parser.add_option("-f","--file",dest="filename",help="read picture from File",metavar="FILE",action = "store",type="string") parser.add_option("-s","--save",dest="save_mold",help="save image to file or not",default = True) (options,args)=parser.parse_args() print options.filename print options.save_mold
各个参数的含义:
- dest:用于保存输入的临时变量,其值通过options的属性进行访问,存储的内容是-f或 –file之后输入的参数
- type: 用于检查命令行参数传入的参数的数据类型是否符合要求,有string,int,float等类型
- action: 用于指导程序在遇到命令行参数时候该如何处理,有三种值可选: store,store_false和store_true,默认值是store
- store:读取参数,如果参数类型符合type的要求,则将参数值传递给dest变量,作为options的一个属性供使用。
- store_true/store_false: 一般作为一个标记使用,分别设置dest变量的值为True和False
- metavar:占位字符串,用于在输出帮助信息时,代替当前命令选项的附加参数的值进行输出,只在帮助信息里有用,注意其和default的区别
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/120998.html