Как извлечь местоположение твитов, которые содержат определенное ключевое слово, используя Twitter API в Python - PullRequest
3 голосов
/ 03 июля 2019

Я пытаюсь извлечь все твиты, содержащие определенное ключевое слово и его географическое положение.

например, я хочу скачать все твиты на английском языке, содержащие ключевое слово 'iphone' из 'франция' и 'сингапур'

Мой код

import tweepy
import csv
import pandas as pd
import sys

# API credentials here
consumer_key = 'INSERT CONSUMER KEY HERE'
consumer_secret = 'INSERT CONSUMER SECRET HERE'
access_token = 'INSERT ACCESS TOKEN HERE'
access_token_secret = 'INSERT ACCESS TOKEN SECRET HERE'

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth,wait_on_rate_limit=True,wait_on_rate_limit_notify=True)

# Search word/hashtag value 
HashValue = ""

# search start date value. the search will start from this date to the current date.
StartDate = ""

# getting the search word/hashtag and date range from user
HashValue = input("Enter the hashtag you want the tweets to be downloaded for: ")
StartDate = input("Enter the start date in this format yyyy-mm-dd: ")

# Open/Create a file to append data
csvFile = open(HashValue+'.csv', 'a')

#Use csv Writer
csvWriter = csv.writer(csvFile)

for tweet in tweepy.Cursor(api.search,q=HashValue,count=20,lang="en",since=StartDate, tweet_mode='extended').items():
    print (tweet.created_at, tweet.full_text)
    csvWriter.writerow([tweet.created_at, tweet.full_text.encode('utf-8')])

print ("Scraping finished and saved to "+HashValue+".csv")
#sys.exit()

Как это можно сделать.

1 Ответ

0 голосов
/ 07 июля 2019

-Hello- Rahul

Насколько я понимаю, вы хотите получать геоданные из искомых твитов, а не фильтровать поиск по геокодированию.

Вот пример кода с соответствующими полямиВы заинтересованы. Они могут предоставляться или не предоставляться в зависимости от настроек конфиденциальности твитеров.

Обратите внимание, что в API поиска нет параметра "с":

https://tweepy.readthedocs.io/en/latest/api.html#help-methods

https://developer.twitter.com/en/docs/tweets/search/api-reference/get-search-tweets

Стандартный поиск в твиттер-API возвращается назад 7дней.Премиум и API для предприятий имеют 30-дневный поиск, а также поиск в полном архиве, но вы заплатите $$$.

К сожалению, у tweepy до сих пор не документированы их модели:

https://github.com/tweepy/tweepy/issues/720

Так что, если вы хотите посмотреть на объект твита, вы можете использовать пакет pprint и запустить:

pprint(tweet.__dict__)

Я заметил одно отличие: поле "текст" в JSON стало "full_text"в объекте.

Там также есть информация об оригинальном твите, если тот, который вы нашли, был твитом с цитатой, имеет ту же информацию, что и я.

В любом случае, вот код,Я добавил максимальное количество твитов для циклического прохождения курсора во время тестирования, чтобы не нарушать какие-либо ограничения API.

Дайте мне знать, если вам нужен код CSV, но похоже, что вы уже можете справиться с этим.

import tweepy

# API credentials here
consumer_key = 'your-info'
consumer_secret = 'your-info'
access_token = 'your-info'
access_token_secret = 'your-info'

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth,wait_on_rate_limit=True,wait_on_rate_limit_notify=True)

searchString = "iPhone"

cursor = tweepy.Cursor(api.search, q=searchString, count=20, lang="en", tweet_mode='extended')

maxCount = 1
count = 0
for tweet in cursor.items():    
    print()
    print("Tweet Information")
    print("================================")
    print("Text: ", tweet.full_text)
    print("Geo: ", tweet.geo)
    print("Coordinates: ", tweet.coordinates)
    print("Place: ", tweet.place)
    print()

    print("User Information")
    print("================================")
    print("Location: ", tweet.user.location)
    print("Geo Enabled? ", tweet.user.geo_enabled)

    count = count + 1
    if count == maxCount:
        break;

Будет выводить что-то вроде этого:

Tweet Information
================================
Text:  NowPlaying : Hashfinger - Leaving
https://derp.com

#iPhone free app https://derp.com
#peripouwebradio
Geo:  None
Coordinates:  None
Place:  None

User Information
================================
Location:  Greece
Geo Enabled?  True
...