我正在尝试提取所有包含特定关键字及其地理位置的推文。
例如,我想从'france'和'singapore'下载所有包含关键字'iphone'的英文推文
我的代码
import tweepy
import csv
import pandas as pd
import sys
# API credentials here
consumer_key = 'INSERT CONSUMER KEY HERE'
consumer_secret = 'INSERT CONSUMER SECRET HERE'
access_token = 'INSERT ACCESS TOKEN HERE'
access_token_secret = 'INSERT ACCESS TOKEN SECRET HERE'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth,wait_on_rate_limit=True,wait_on_rate_limit_notify=True)
# Search word/hashtag value
HashValue = ""
# search start date value. the search will start from this date to the current date.
StartDate = ""
# getting the search word/hashtag and date range from user
HashValue = input("Enter the hashtag you want the tweets to be downloaded for: ")
StartDate = input("Enter the start date in this format yyyy-mm-dd: ")
# Open/Create a file to append data
csvFile = open(HashValue+'.csv', 'a')
#Use csv Writer
csvWriter = csv.writer(csvFile)
for tweet in tweepy.Cursor(api.search,q=HashValue,count=20,lang="en",since=StartDate, tweet_mode='extended').items():
print (tweet.created_at, tweet.full_text)
csvWriter.writerow([tweet.created_at, tweet.full_text.encode('utf-8')])
print ("Scraping finished and saved to "+HashValue+".csv")
#sys.exit()
这怎么办?
答案 0 :(得分:0)
-你好-Rahul
据我了解,您希望从搜索到的推文中获取地理数据,而不是根据地理编码过滤搜索。
这是一个代码示例,其中包含您感兴趣的相关字段。根据高音扬声器的隐私设置,可能不会提供这些内容。
请注意,搜索API上没有“自”参数:
https://tweepy.readthedocs.io/en/latest/api.html#help-methods
https://developer.twitter.com/en/docs/tweets/search/api-reference/get-search-tweets
标准的Twitter API搜索可以追溯到7天。高级API和企业API具有30天的搜索以及完全存档的搜索,但是您需要支付$$$。
不幸的是,tweepy尚未记录其模型:
https://github.com/tweepy/tweepy/issues/720
因此,如果要查看tweet对象,可以使用pprint包并运行:
pprint(tweet.__dict__)
我注意到的一个区别是JSON中的“文本”字段在对象中变成了“全文”。
如果您发现的是原始推文,其中也有关于原始推文的信息,与我所看到的信息相同。
无论如何,下面是代码,我在测试时添加了一个最大的tweet计数,用于遍历游标,以避免破坏任何API限制。
让我知道您是否要使用csv代码,但看起来您已经可以处理它了。
import tweepy
# API credentials here
consumer_key = 'your-info'
consumer_secret = 'your-info'
access_token = 'your-info'
access_token_secret = 'your-info'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth,wait_on_rate_limit=True,wait_on_rate_limit_notify=True)
searchString = "iPhone"
cursor = tweepy.Cursor(api.search, q=searchString, count=20, lang="en", tweet_mode='extended')
maxCount = 1
count = 0
for tweet in cursor.items():
print()
print("Tweet Information")
print("================================")
print("Text: ", tweet.full_text)
print("Geo: ", tweet.geo)
print("Coordinates: ", tweet.coordinates)
print("Place: ", tweet.place)
print()
print("User Information")
print("================================")
print("Location: ", tweet.user.location)
print("Geo Enabled? ", tweet.user.geo_enabled)
count = count + 1
if count == maxCount:
break;
将输出如下内容:
Tweet Information
================================
Text: NowPlaying : Hashfinger - Leaving
https://derp.com
#iPhone free app https://derp.com
#peripouwebradio
Geo: None
Coordinates: None
Place: None
User Information
================================
Location: Greece
Geo Enabled? True