Chuyển đổi tweet của Twitter thành điểm?


14

Tôi đã thực hiện một số nghiên cứu về việc sử dụng R để datamine twitter, nhưng tôi thực sự không tìm thấy câu trả lời hoặc một hướng dẫn đúng đắn cho câu hỏi của mình.

Tôi quan tâm đến việc kéo các tweet từ twitter bằng một hashtag nhất định, trong một khung thời gian nhất định và vẽ sơ đồ vị trí của các tweet đó trên bản đồ trong QGIS hoặc ArcMap.

Tôi biết rằng các tweet có thể có vị trí địa lý gắn liền với chúng, nhưng làm thế nào để tôi trích xuất thông tin này ở nơi đầu tiên?


Điều này có thể giúp: mike.teczno.com/notes/streaming-data-from-twitter.html Tôi thừa nhận tôi đã không đọc tất cả, nhưng có vẻ như họ chỉ ra cách lấy từng vị trí tweet.
ianbroad

1
có vẻ như bạn có thể mất các thẻ sản phẩm "r", "qgis" và "arcgis" vì bạn chỉ cần trích xuất tọa độ từ API của Twitter. Khi bạn có thông tin đó, bạn sẽ thêm điểm vào bất kỳ sản phẩm nào bằng chức năng tiêu chuẩn của nó
Stephen Lead

Lỗi 401 đang đến khi chạy mã.
shikhar

Câu trả lời:


22

Tôi đã tìm thấy một cách sử dụng hoàn toàn Python để lấy tọa độ cho các tweet bằng bộ lọc từ. Dường như nhiều người không bao gồm vị trí với các tweet của họ.

Đây có thể không phải là những gì bạn theo sau bởi vì đây là dữ liệu phát trực tiếp. Bạn có thể kiểm tra nó bằng cách đặt một từ bộ lọc duy nhất và sau đó tweet từ đó từ tài khoản Twitter của bạn. Bạn sẽ thấy tweet của mình hiển thị trong Python gần như ngay lập tức. Điều này sẽ khá tuyệt để sử dụng cho một số sự kiện lớn.

Bạn sẽ cần cài đặt Tweepy .

pip install tweepy

Và nhận được một API API Twitter .

Sau đó, bạn có thể sử dụng tập lệnh này làm mẫu:

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

#Enter Twitter API Key information
consumer_key = ''
consumer_secret = ''
access_token = ''
access_secret = ''

file = open("C:\\Output.csv", "w")
file.write("X,Y\n")

data_list = []
count = 0

class listener(StreamListener):

    def on_data(self, data):
        global count

        #How many tweets you want to find, could change to time based
        if count <= 2000:
            json_data = json.loads(data)

            coords = json_data["coordinates"]
            if coords is not None:
               print coords["coordinates"]
               lon = coords["coordinates"][0]
               lat = coords["coordinates"][1]

               data_list.append(json_data)

               file.write(str(lon) + ",")
               file.write(str(lat) + "\n")

               count += 1
            return True
        else:
            file.close()
            return False

    def on_error(self, status):
        print status

auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)
twitterStream = Stream(auth, listener())
#What you want to search for here
twitterStream.filter(track=["Halloween"])

Kiểm tra tài liệu này từ Twitter, nó cho thấy những gì bạn có thể đặt trong bộ lọc.

Đây là kết quả của việc đặt bộ lọc thành "Halloween" trong vài phút:

nhập mô tả hình ảnh ở đây

Và cho địa ngục của nó, đây là 2000 tweet đầu tiên đề cập đến Halloween!

http://i.stack.imgur.com/bwdoP.png nhập mô tả hình ảnh ở đây

Halloween vui vẻ!


Đây sẽ là 100% những gì tôi đang tìm kiếm nếu nó bằng cách nào đó cho phép tôi lướt qua các tweet cũ hơn. Tôi sẽ chơi xung quanh với điều này và xem những gì tôi có thể đưa ra. Cảm ơn rât nhiều!
Bradley_Jay

@Bradley_Jay Không có vấn đề. Theo như sau, Twitter không thực sự cung cấp các tweet cũ hơn. stackoverflow.com/questions/1662151/
hy

Bạn cũng có thể lọc với hộp giới hạn thay vì 'theo dõi', ví dụ: vị trí = [- 180, -90,180,90]
Matt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.