2015-12-03 10 views
10

मैं ट्वीट स्थान का उपयोग कर ट्वीट डाउनलोड करने के लिए tweepy का उपयोग करने की कोशिश कर रहा हूं, न कि उपयोगकर्ता के स्थान से। वर्तमान में, मैं उपयोगकर्ता स्थान के साथ ट्वीट्स डाउनलोड कर सकता हूं लेकिन ट्वीट्स स्थान प्राप्त करने में सक्षम नहीं हूं, भले ही geo_enabled सही हो।ट्वीट स्थान और उपयोगकर्ता स्थान द्वारा स्क्रैप ट्वीट

उदाहरण के लिए, मान लीजिए user_a न्यूयॉर्क से है लेकिन वह कैलिफ़ोर्निया से ट्वीट करता है। मैं उपयोगकर्ता उपयोगकर्ता, न्यूयॉर्क, और ट्वीट स्थान, कैलिफ़ोर्निया दोनों चाहता हूं।

कोड:

import tweepy 
from tweepy import Stream 
from tweepy import OAuthHandler 
from tweepy.streaming import StreamListener 
import pandas as pd 
import json 
import csv 
import sys 
reload(sys) 
sys.setdefaultencoding('utf8') 

ckey = 'key' 
csecret = 'secret' 
atoken = 'token' 
asecret = 'secret' 
#csvfile = open('StreamSearch.csv','a') 
#csvwriter = csv.writer(csvfile, delimiter = ',') 

class StdOutListener(StreamListener): 
    def __init__(self, api=None): 
     super(StdOutListener, self).__init__() 
     self.num_tweets = 0 

    def on_data(self, data): 
     self.num_tweets += 1 
     if self.num_tweets < 5: #Remove the limit of no. of tweets to 5 
      print data 
      return True 
     else: 
      return False 

    def on_error(self, status): 
     print status 


l = StdOutListener() 
auth = OAuthHandler(ckey, csecret) 
auth.set_access_token(atoken, asecret) 
stream = Stream(auth, l) 
stream.filter(locations = [80.10,12.90,80.33,13.24]) #user location 

आउटपुट

userLocation, userTimezone, Coordinates,GeoEnabled, Language, TweetPlace 
London,UK  Amsterdam     FALSE  en   null 
Aachen,Germany Berlin     TRUE  de   null 
Kewaunee Wi        TRUE  en   null 
Connecticut, Eastern Time (US & Canada) TRUE  en   null 
              TRUE  en   null 
Lahore, City of Gardens London   TRUE  en   null 
NAU class of 2018. Arizona    FALSE  en   null 
              FALSE  en   null 
    Pacific Time (US & Canada)   FALSE  en   null 

ऊपर दिए गए उत्पादन बड़े पैमाने पर डेटा का संस्करण साफ किया जाता है। भले ही Geolocation सक्षम है, मैं ट्वीट स्थान प्राप्त नहीं कर पा रहा हूं और न ही co-ordinates

+0

यह बहुत व्यापक प्रश्न है, हमें बताएं कि आपने क्या प्रयास किया है। – SIslam

+0

@SIslam कोड और आउटपुट –

+1

शामिल हो सकता है- http://stackoverflow.com/a/16892093/4065350 –

उत्तर

6
  1. ट्वीट्स geo_enabled == True के साथ ट्वीट ट्वीट क्यों नहीं देते हैं?

this के अनुसार, यदि स्थान या निर्देशांक कोई नहीं है, तो इसका मतलब है कि उपयोगकर्ता ने उस ट्वीट के लिए अनुमति की अनुमति नहीं दी है। Geo_enabled वाले उपयोगकर्ताओं को अभी भी प्रदर्शित होने के लिए उनके सटीक स्थान के लिए स्पष्ट अनुमति देना है। इसके अलावा, documentation राज्यों:

geo_enabled: जब सच है, बताता है कि उपयोगकर्ता अपने ट्वीट जियोटैगिंग की संभावना में सक्षम बनाया है। POST स्थिति/अद्यतन का उपयोग करते समय वर्तमान उपयोगकर्ता के लिए भौगोलिक डेटा संलग्न करने के लिए यह फ़ील्ड सत्य होना चाहिए।

  1. ट्वीट स्थान द्वारा फ़िल्टर कैसे करें? Check here

आप स्थान के आधार पर फ़िल्टर करते हैं, तो केवल अनुरोध किया बाउंडिंग बॉक्स के भीतर आने वाले ट्वीट शामिल किया जाएगा, उपयोगकर्ता के स्थान क्षेत्र ट्वीट्स फिल्टर करने के लिए नहीं किया जाता है। यदि निर्देशांक और स्थान खाली हैं, तो ट्वीट फ़िल्टर को पास नहीं करेगा।

#filter all tweets from san francisco 
myStream.filter(location= [-122.75,36.8,-121.75,37.8]) 
  1. उपयोगकर्ता स्थान और ट्वीट स्थान के आधार पर फ़िल्टर कैसे?

आप फ़िल्टर से ट्वीट्स को कैप्चर कर सकते हैं और फिर रुचि के क्षेत्र से मेल खाने के लिए लेखकों के स्थान की जांच कर सकते हैं।

class StdOutListener(StreamListener): 
    def __init__(self, api=None): 
     super(StdOutListener, self).__init__() 
     self.num_tweets = 0 

    def on_data(self, data): 
    #first check the location is not None 
     if status.author.location and 'New York' in status.author.location: 
      self.num_tweets += 1 
      print data 
     if self.num_tweets < 5: #Remove the limit of no. of tweets to 5    
      return True 
     else: 
      return False 
    def on_error(self, status): 
     print status 
  1. कैसे ट्विटर एपीआई फिल्टर करने के लिए अपने आप को सीमित नहीं करने के लिए?

फिल्टर याद रखें जब तक कि यह एक पैरामीटर गुजरता सभी ट्वीट्स की अनुमति देता है, इसलिए यदि आप अधिक प्रतिबंधात्मक होने की जरूरत है बस के रूप में मैं (3) लेखक स्थान के लिए में किया था def on_data(self, data) में सशर्त खंड शामिल हैं।

संबंधित मुद्दे