2015-12-03 19 views
10

Tôi đang cố gắng sử dụng tweepy để tải xuống tweet bằng cách sử dụng vị trí tweet chứ không phải theo vị trí của người dùng. Hiện tại, tôi có thể tải xuống các tweet với vị trí của người dùng nhưng không thể nhận vị trí tweet ngay cả khi geo_enabled trả về True. Ví dụ: giả sử user_a là từ New York nhưng anh ấy tweet từ California. Tôi muốn cả vị trí người dùng, New York và vị trí tweet, California.Trích mẩu tweet bằng vị trí tweet và vị trí của người dùng

Code:

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 

Output

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 

Kết quả đưa ra ở trên được làm sạch phiên bản của dữ liệu lớn. Mặc dù Geolocation được bật nhưng tôi không thể nhận vị trí tweet và cũng không phải là co-ordinates.

+0

Câu hỏi rất rộng này, hãy cho chúng tôi biết những gì bạn đã thử. – SIslam

+0

@SIslam Bao gồm mã và đầu ra –

+1

Có thể có liên quan- http://stackoverflow.com/a/16892093/4065350 –

Trả lời

6
  1. Tại sao tweet với geo_enabled == True không cung cấp vị trí tweet?

Theo this, nếu địa điểm hoặc tọa độ là Không, điều đó có nghĩa là người dùng không cho phép cho tweet đó. Người dùng bật geo_enabled vẫn phải cấp quyền rõ ràng cho vị trí chính xác của họ sẽ được hiển thị. Ngoài ra, các documentation khẳng định:

geo_enabled: Khi sự thật, chỉ ra rằng người dùng đã kích hoạt các khả của Thẻ địa lý Tweets của họ. Trường này phải đúng với người dùng hiện tại để đính kèm dữ liệu địa lý khi sử dụng trạng thái/cập nhật POST.

  1. Làm cách nào để lọc theo vị trí tweet? Check here

Nếu bạn lọc theo vị trí, chỉ Tweets thuộc các hộp bounding yêu cầu sẽ được bao gồm, lĩnh vực vị trí của người dùng không được sử dụng để lọc các tweet. Nếu tọa độ và địa điểm trống, thì tweet sẽ không vượt qua bộ lọc.

#filter all tweets from san francisco 
myStream.filter(location= [-122.75,36.8,-121.75,37.8]) 
  1. Làm cách nào để lọc theo vị trí người dùng và vị trí tweet?

Bạn có thể chụp các mẩu tin từ bộ lọc và sau đó kiểm tra vị trí của tác giả để phù hợp với khu vực bạn quan tâm.

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. Làm thế nào để không giới hạn bản thân vào bộ lọc API Twitter?

Hãy nhớ rằng các bộ lọc cho phép tất cả các tweet chừng nào nó đi một trong những thông số, vì vậy nếu bạn cần phải hạn chế hơn chỉ bao gồm các điều khoản điều kiện trong def on_data(self, data) như tôi đã làm trong (3) cho vị trí tác giả.

Các vấn đề liên quan