Bis zum letzten Mal haben wir die Butler-Klasse für die einfache Suche nach Tweets und die Tweet-Klasse für die Verarbeitung von Tweets implementiert. Dieses Mal möchte ich die Funktion implementieren, um nach Benutzer und der Benutzerklasse in der Butler-Klasse zu suchen.
Ich werde den Code zuerst bis zum letzten Mal einfügen.
tweet_butler.py
from . import config
from requests_oauthlib import OAuth1Session
import json
class Butler:
def __init__(self,setting = config):
self.api = OAuth1Session(setting.Consumer_Key, setting.Consumer_Secret_Key, setting.Access_Token, setting.Access_Secret_Token)
self.search_url = "https://api.twitter.com/1.1/search/tweets.json"
def search(self,word,count=10):
params = {"q":word,"count":count}
res = self.api.get(self.search_url, params = params)
if res.status_code == 200:
search_results = json.loads(res.text)
tweets = [Tweet(result) for result in search_results["statuses"]]
return tweets
class Tweet:
def __init__(self,tweet):
self.dict = tweet
self.tweet_id = tweet["id"]
self.user_id = tweet["user"]["id"]
self.user_name = tweet["user"]["screen_name"]
self.text = tweet["text"]
self.created_at = tweet["created_at"]
self.favorite_count = tweet["favorite_count"]
self.hashtags = tweet["entities"]["hashtags"]
self.symbols = tweet["entities"]["symbols"]
self.mention = tweet["entities"]["user_mentions"]
def get_text(self):
return self.text
Sie können die API einfach durchsuchen, indem Sie eine GET-Anforderung an eine URL senden. Bei der Suche nach Benutzern scheint es die folgenden drei Methoden zu geben. ・ Benutzer / Suche ・ Benutzer / Suche ・ Benutzer / Show Suche sucht nach Benutzern, die ein Wort treffen, zeigt nur einen Benutzer mit derselben ID und demselben Bildschirmnamen aus, sucht nach mehreren Personen in der Anzeige und listet in ID und Bildschirmname auf. Kann eingegeben werden. Keiner von ihnen ist schwer zu implementieren, aber dieses Mal werden wir zuerst show verwenden.
Das erste, was Sie benötigen, ist ein API-Token. Dies wurde letztes Mal erklärt, also werde ich es weglassen. Crawlen mit Python und Twitter API 1 - Einfache Suchfunktion
Als nächstes folgt die Ressourcen-URL für Benutzer / Show. https://api.twitter.com/1.1/users/show.json Sie müssen auch wissen, welche JSON-Dateien Sie in diese API einfügen, um sie zu implementieren.
{
"Name": "name",
"user_id": "id",
"screen_name": "screen_name",
"include_entities": "include_entities",
}
Die obigen vier Elemente können als Eingabe für die JSON-Datei verwendet werden. Von diesen ist immer einer von "Name, Benutzer-ID, Bildschirmname" erforderlich.
Der Rest ist die Umsetzung. Dies ist nicht viel anders als beim letzten Mal. Implementieren Sie als Methode der Butler-Klasse. Butler.get_user_by_id() Erstens ist es eine Methode, um den Benutzer mithilfe von showAPI von der ID abzurufen.
tweet_butler.py
class Butler:
def __init__(self, setting = config):
self.get_user_url = "https://api.twitter.com/1.1/users/show.json"
:
:
def get_user_by_id(self, id):
params = {"user_id":user_id}
res = self.api.get(self.get_user_url, params = params)
if res.status_code == 200:
search_results = json.loads(res.text)
else:
assert False, "{} error happen in get_user_by_id method".format(res.status_code)
return User(search_results)
Butler.get_user_by_name Als nächstes folgt die Methode, um den Benutzer von "screen_name" abzurufen. Die verwendete API ist dieselbe
tweet_butler.py
:
:
def get_user_by_name(self,name):
params = "Name":name}
res = self.api.get(self.get_user_url, params =params)
if res.status_code == 200:
search_results = json.loads(res.text)
else:
assert False, "{} error happen in get_user_by_name method".format(res.status_code)
return User(search_results)
Dieses Mal werde ich der Benutzerklasse keine große Sache auferlegen.
tweet_butler.py
class User:
def __init__(self, user_dict):
self.dict = user_dict
self.id = user_dict["id"]
self.name = user_dict["name"]
self.screen_name = user_dict["screen_name"]
Es tut mir leid für die Auslassung.
Es scheint, dass das Benutzerobjekt in dem in der Antwort zurückgegebenen Tweet-Objekt enthalten ist. Fügen Sie daher eine neue Methode get_user als Methode der Tweet-Klasse hinzu. Ich habe auch einige der Klassenvariablennamen geändert.
tweet_butler.py
class Tweet:
def __init__(self,tweet):
self.dict = tweet
self.id = tweet["id"]
self.user_id = tweet["user"]["id"]
self.user_name = tweet["user"]["screen_name"]
self.text = tweet["text"]
self.created_at = tweet["created_at"]
self.favorite_count = tweet["favorite_count"]
self.hashtags = tweet["entities"]["hashtags"]
self.symbols = tweet["entities"]["symbols"]
self.mention = tweet["entities"]["user_mentions"]
def get_text(self):
return self.text
##########Der folgende Teil wurde neu hinzugefügt###########
def get_user(self):
return User(self.dict["user"])
Als nächstes möchte ich die Suche nach Benutzern mithilfe der Benutzer- / Such-API aktivieren und Tweets eines bestimmten Benutzers abrufen können.
Tweets von bestimmten Benutzern auf Twitter abrufen twitter developer
Recommended Posts