欢迎访问宙启技术站
智能推送

使用tweepy.streamingStreamListener()爬取推特数据的完整指南

发布时间:2023-12-31 17:08:17

使用tweepy.streamingStreamListener()爬取推特数据的步骤:

1. 首先,确保已在系统中安装了Tweepy库。可以使用以下命令在终端或命令提示符中安装Tweepy:

pip install tweepy

2. 导入所需的库:

import tweepy
from tweepy.streaming import StreamListener
from tweepy import OAuthHandler

3. 创建一个继承自StreamListener的自定义类。这个类将处理从Twitter Streaming API接收到的推文数据。重写on_data()方法来处理推文数据的逻辑:

class TwitterStreamListener(StreamListener):

    def on_data(self, data):
        # 在这里处理从Twitter Streaming API接收到的推文数据
        # 解析和保存数据的逻辑
        return True

4. 创建一个OAuthHandler对象并设置Twitter API的认证信息。通过前往https://developer.twitter.com/创建一个应用程序来获取这些信息。将CONSUMER_KEYCONSUMER_SECRETACCESS_TOKENACCESS_TOKEN_SECRET替换为您应用程序的实际值:

auth = OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

5. 创建一个新的Stream对象,并将认证处理程序和自定义的StreamListener类传递给它:

stream = tweepy.Stream(auth, TwitterStreamListener())

6. 使用filter()方法设置感兴趣的关键字或用户,以过滤从Twitter Streaming API接收到的推文。可以是一个或多个关键字,也可以是一个或多个用户ID:

keywords = ['keyword1', 'keyword2']
users = ['user1', 'user2']
stream.filter(track=keywords, follow=users)

在上述代码中,推文将被过滤以仅包含包含关键字'keyword1''keyword2'的推文,并且只包含被用户'user1''user2'发布的推文。

7. 最后,在你的自定义on_data()方法中添加逻辑来解析和处理推文数据。例如,可以使用json库将接收到的推文数据转换为Python字典:

import json

def on_data(self, data):
    tweet = json.loads(data)
    # 提取推文的信息,如文本、作者、发布时间等
    # 处理和保存数据的逻辑
    return True

这只是一个简单示例,你可以根据需要处理和保存推文数据。

完整示例代码:

import tweepy
from tweepy.streaming import StreamListener
from tweepy import OAuthHandler
import json

class TwitterStreamListener(StreamListener):

    def on_data(self, data):
        tweet = json.loads(data)
        print(tweet['text'])  # 打印推文文本
        return True

consumer_key = 'YOUR_CONSUMER_KEY'
consumer_secret = 'YOUR_CONSUMER_SECRET'
access_token = 'YOUR_ACCESS_TOKEN'
access_token_secret = 'YOUR_ACCESS_TOKEN_SECRET'

auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)

stream = tweepy.Stream(auth, TwitterStreamListener())
keywords = ['keyword1', 'keyword2']
stream.filter(track=keywords)

上述代码将打印带有关键字'keyword1''keyword2'的推文的文本。你可以根据需要使用其他推文数据的属性和逻辑来进行自定义处理和保存。