如何使用python从用户时间线twitter检索/查找tweet上的特定文本

Posted

技术标签:

【中文标题】如何使用python从用户时间线twitter检索/查找tweet上的特定文本【英文标题】:How to retrieve/find with specific text on tweet from user timeline twitter with python 【发布时间】:2018-11-01 21:54:31 【问题描述】:

我正在尝试使用 python 从用户时间轴获取包含文本“#Gempa”的特定推文

我能够获取用户时间线,但我想获取时间线,其文本仅包含“#Gempa”或特定文本

这是我的代码

#Import the necessary methods from tweepy library
import tweepy, codecs
import pymysql
import time

#Variables that contains the user credentials to access Twitter API 
access_token = "XXX"
access_token_secret = "XXX"
consumer_key = "XXX"
consumer_secret = "XXX"

#Authentication
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

#Declare Connection
conn = pymysql.connect(host='localhost', port='', user='root', passwd='', db='test', use_unicode=True, charset="utf8mb4")
cur = conn.cursor()

#Get Current Date Time
curdatetime = time.strftime("%Y-%m-%d %H:%M:%S")

cur.execute("DELETE FROM tweet order by id desc LIMIT 500")

#Get last id from table tweet
last_id = 0
cur.execute("SELECT MAX(id) FROM tweet")
result = cur.fetchall()
for row in result:
    last_id = row[0]
    print ("Last ID : " + str(last_id))

#Get Number of Tweet
user = api.get_user(108543358)
print ("Name:", user.name)
print ("Name:", user.screen_name)
print ("Number of tweets: " + str(user.statuses_count))
print ("followers_count: " + str(user.followers_count))
print ("Account location: ", user.location)
print ("Account created at: ", user.created_at)


n = 0
for Tweet in tweepy.Cursor(api.user_timeline, id=108543358, q = "#Gempa", lang = id, result_type = "recent", since_id = last_id).items(3):
    print ("*****" + str(i) +"*****")
    print ("ID: " + Tweet.id_str)
    print ("Text: " + str(Tweet.text.encode("utf-8")))
    print ("Retweet Count: " + str(Tweet.retweet_count))
    print ("Favorite Count: " + str(Tweet.favorite_count))
    print ("Date Time: " + str(Tweet.created_at))
    #print (str(Tweet.location)) #how to get geolocation data for mapping ?
    print ("************")

    n = n + 1
    cur.execute("INSERT INTO tweet (no, id, text, retweet_count, favourite_count, date_time) VALUES (%s, %s,%s,%s,%s,%s)",
    (str(n), Tweet.id_str, Tweet.text.encode("utf-8"), str(Tweet.retweet_count), str(Tweet.favorite_count), str(Tweet.created_at)))


conn.commit()
cur.close()
conn.close()

结果是

result

我无法获取带有特定文本的用户时间线,任何人都可以解决这个问题,谢谢

【问题讨论】:

你是认真的吗?出于安全原因删除您的令牌! 天哪,再次感谢提醒我有关令牌的信息。我是新手,对不起:( 伟大的建议先生 【参考方案1】:

首先API.user_timeline没有“q”、“lang”、“result_type”参数(阅读http://docs.tweepy.org/en/v3.5.0/api.html#API.user_timeline)

因此,要忽略某些推文,您必须编写一个过滤器。您可以像这样跳过不包含“#Gempa”的推文:

for Tweet in api.user_timeline(user_id=108543358):
    text = str(Tweet.text.encode("utf-8"))
    if "#Gempa" not in text:
        continue
    print ("*****" + str(n) +"*****")
    print ("ID: " + Tweet.id_str)
    ...

【讨论】:

感谢您的回复,我真的很感激。但是在python中,代码“不在”它必须与我在另一个案例文本挖掘***.com/questions/50480787/…中使用它“不在”的文本完全相同,但我没有得到任何结果。我需要像过滤仅包含“#Gempa”的文本的代码,还有其他解决方案吗? 哦,不,这是一个很好的答案。我刚刚用'Gempa'更改了“#Gempa”,感谢@JeffProd的回答,问题现在解决了。 很好的答案先生

以上是关于如何使用python从用户时间线twitter检索/查找tweet上的特定文本的主要内容,如果未能解决你的问题,请参考以下文章

将使用 Python 从 Twitter 检索到的数据保存到文本文件中?

如何使用 Python 检索给定用户的所有推文和属性?

如何使用 Python 检索给定用户的所有推文和属性?

如何从 MSN、Twitter、Facebook、GMail 等中检索联系人/电子邮件?

如何使用fabric从twitter webview中检索登录回调

获取 Twitter 用户的整个用户时间线