Ich dachte, es wäre großartig, wenn es ein Programm gäbe, das die Tweets des Benutzers auf Twitter verfolgen und die geposteten Bilder sofort speichern könnte. Dieses Programm verwendet Python 2.7, das ich gerade studiere. Ich denke, es wird funktionieren, wenn Sie eine Python2-Ausführungsumgebung haben.
Grundsätzlich werden der API-Schlüssel Ihres Twitter-Kontos, die ID des Kontos des Benutzers, den Sie zurückverfolgen möchten, und die Anzahl der zurückverfolgbaren Tweets im Programm angegeben und ausgeführt. Es scheint, dass die maximale Anzahl von Tweets, die von einem Benutzer zurückverfolgt werden können, aufgrund von API-Einschränkungen bis zu den neuesten 3200 Tweets beträgt. Es werden auch mehrere Bildposting-Tweets unterstützt, GIFs, Videos usw. werden jedoch nicht gespeichert. Wenn Sie einen Benutzer mit einem Schlüsselkonto ansprechen, benötigen Sie die API des Kontos, das diesem Benutzer folgt.
imgcrawler_twi.py
#coding: UTF-8
from requests_oauthlib import OAuth1Session
import json
import twitkey
import requests
import sys, urllib
import os.path
import time
twitter = OAuth1Session(twitkey.twkey["CONSUMER_KEY"],
twitkey.twkey["CONSUMER_SECRET"],
twitkey.twkey["ACCESS_TOKEN"],
twitkey.twkey["ACCESS_TOKEN_SECRET"]
)
#Separate Datei twitkey.Beziehen Sie sich auf jeden erforderlichen Parameterwert von py.
Get_Count = 17 #Get_Geben Sie an, wie oft der Tweet in Count erfasst wird
Get_At_Once = 200 #Get_At_Geben Sie die Anzahl der Tweets an, die bei einer Erfassung einmal zurückverfolgt werden können
User_Id = "" #User_Geben Sie die ID des Benutzers an, der das Bild bis zum ID-Beispiel zurückverfolgen möchte:github
Path = "" #Geben Sie im Pfadbeispiel den Dateipfad des Verzeichnisses an, in dem Sie das Bild speichern möchten:./Images/
for i in range(1,Get_Count):
if(i==1):
params = {"count":Get_At_Once}
else:
params = {"count":Get_At_Once,"max_id":num}
req = twitter.get("https://api.twitter.com/"
"1.1/statuses/user_timeline.json"
"?screen_name=%s&include_rts=false" % User_Id,
params=params)
timeline = json.loads(req.text)
if(req.status_code == 200):
if(i==1):
counter=1
else:
counter=count
for tweet in timeline:
print counter
print tweet["text"]
num = tweet["id"]
counter=counter+1
if("extended_entities" in tweet.keys()):
if("media" in tweet["extended_entities"].keys()):
print len(tweet["extended_entities"]["media"])
for i in range(0,len(tweet["extended_entities"]["media"])):
if("type" in tweet["extended_entities"]["media"][i].keys()):
if(tweet["extended_entities"]["media"][i]["type"]=="photo"):
print tweet["text"]
url = tweet["extended_entities"]["media"][i]["media_url_https"]
img = urllib.urlopen(url)
Name = tweet["user"]["name"]
created_at = tweet["created_at"]
Month = created_at[4:7]
Date = created_at[8:10]
Hour = created_at[11:13]
Minute = created_at[14:16]
Second = created_at[17:19]
Year = created_at[26:]
img_name = Name+"_"+Year+"_"+Month+"_"+Date+"_"+Hour+"_"+Minute+"_"+Second
localfile = open(Path + img_name +"_"+str(i)+".jpg ", 'wb')
localfile.write(img.read())
img.close()
localfile.close()
else:
print "No Image"
count=counter
else:
print (req.status_code)
time.sleep(240)
#Fehlerbehandlung
twitkey.py
#coding: UTF-8
twkey = {
"CONSUMER_KEY": "",
"CONSUMER_SECRET": "",
"ACCESS_TOKEN": "",
"ACCESS_TOKEN_SECRET": ""
}
#Bitte geben Sie jeden Parameter ein
Geben Sie in twitkey.py den API-Schlüssel Ihres Twitter-Kontos ein. Das hier verwendete Konto kann entweder aufgegeben oder echt sein. Es sind vier Parameterwerte erforderlich, die Sie jedoch leicht überprüfen können.
Die vier diesmal erforderlichen Werte sind CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN und ACCESS_TOKEN_SECRET.
Zur Bestätigung des API-Schlüssels ist diese Seite hilfreich. http://phiary.me/twitter-api-key-get-how-to/
Das Programm enthält vier Parameterwerte. Geben Sie jeweils die erforderlichen Werte an.
Get_Count =
Get_At_Once =
User_Id = ""
Path = ""
Verwenden Sie "Get_Count" und "Get_At_Once", um die Anzahl der zurückzusendenden Tweets anzugeben. Im Einzelnen ist es so, als würde man zum "Get_At_Once" -Tweet "Get_Count-1" zurückkehren. Die Anzahl der Tweets, die gleichzeitig zurückverfolgt werden können, ist auf 200 begrenzt. Daher beträgt der Maximalwert von "Get_At_Once" 200. Gemäß der Spezifikation gibt es eine Beschränkung, dass Sie nur zu den neuesten 3200 Tweets pro Benutzer zurückkehren können. Stellen Sie daher sicher, dass "Get_Count-1" x "Get_At_Once" 3200 oder weniger beträgt. Wenn Sie viel zurückgehen möchten, empfehlen wir, 17 für "Get_Count" und 200 für "Get_At_Once" anzugeben.
Geben Sie unter "User_Id" die ID des Benutzers an, der das Bild verfolgen möchte. Zum Beispiel sieht es aus wie "Github".
Geben Sie unter "Pfad" den Dateipfad des Ordners an, in dem das Bild gespeichert werden soll. Natürlich können Sie es überall speichern, aber erstellen Sie beispielsweise einen Ordner mit dem Namen "Images" im selben Verzeichnis wie der Code und verwenden Sie ihn als "./Images/".
"Kontoname des Benutzers" _ "Tweet-Datum und -Uhrzeit (Jahr, Monat, Tag, Stunde, Minute, Sekunde)" _ "0 bis 3 (dies ist die Nummerierung bei Tweets mit mehreren angehängten Bildern)".
Da das Datum und die Uhrzeit des Tweets in der Londoner Zeit ermittelt werden, gibt es einen Zeitunterschied von 9 Stunden.
Speichern Sie twitkey .py und imgcrawler_twi.py im selben Verzeichnis und führen Sie imgcrawler_twi.py aus. Es ist erfolgreich, wenn das Bild erfolgreich in dem von Ihnen angegebenen Ordner gespeichert wurde.
Setzen Sie dieses Modul beim Laufen ein! Sie können wütend werden. Versuchen Sie in diesem Fall, Module wie "request" und "request-oauthlib" vor der Ausführung mit pip hinzuzufügen.
Ich habe auch das Repository dieses Crawlers auf github gepostet. Bitte schau es dir an! !! https://github.com/tyokuyoku/Twitter_Images_Crawler
Recommended Posts