Ошибки API Twitter: «json.decoder.JSONDecodeError» и «twitter.error.TwitterError»?

Я хочу использовать Twitter API для исследования хэштегов, и я слежу за этим гид.

Однако я продолжаю получать следующую ошибку:

  Traceback (most recent call last):
    File "C:\Users\saly\AppData\Local\Programs\Python\Python36-32\lib\site- 
    packages\twitter\api.py", line 4875, in _ParseAndCheckTwitter
    data = json.loads(json_data)
    File "C:\Users\saly\AppData\Local\Programs\Python\Python36- 
    32\lib\json\__init__.py", line 354, in loads
    return _default_decoder.decode(s)
    File "C:\Users\saly\AppData\Local\Programs\Python\Python36- 
    32\lib\json\decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    File "C:\Users\saly\AppData\Local\Programs\Python\Python36- 
    32\lib\json\decoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
    json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File "C:\Users\saly\Documents\Alpha - P\Python\Data Camp Files\datacamp.py", 
    line 17, in <module>
    for line in stream:
    File "C:\Users\saly\AppData\Local\Programs\Python\Python36-32\lib\site- 
    packages\twitter\api.py", line 4573, in GetStreamFilter
    data = self._ParseAndCheckTwitter(line.decode('utf-8'))
    File "C:\Users\saly\AppData\Local\Programs\Python\Python36-32\lib\site- 
    packages\twitter\api.py", line 4884, in _ParseAndCheckTwitter
    raise T
    twitter.error.TwitterError: {'message': 'Unauthorized'}
    [Finished in 1.0s withwitterError({'message': "Unauthorized"}) exit code 1]
    [shell_cmd: python -u "C:\Users\saly\Documents\Alpha - P\Python\Data Camp 
    Files\datacamp.py"]
    [dir: C:\Users\saly\Documents\Alpha - P\Python\Data Camp Files]
    [path: C:\Program Files (x86)\Common Files\Intel\Shared 
 Libraries\redist\intel64\compiler;C:\ProgramData\Oracle\Java\javapath;C:\Program 
 Files (x86)\Razer Chroma SDK\bin;C:\Program Files\Razer Chroma 
  SDK\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\PuTTY\;C:\Program Files\PuTTY\;C:\Program Files\Git\cmd;C:\Program Files\nodejs\;C:\Users\saly\AppData\Local\Programs\Python\Python36-32\Scripts\;C:\Users\saly\AppData\Local\Programs\Python\Python36-32\;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64\compiler;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Razer Chroma SDK\bin;C:\Program Files\Razer Chroma SDK\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\PuTTY\;C:\Program Files (x86)\Skype\Phone\;C:\Users\saly\AppData\Local\Microsoft\WindowsApps;C:\Python34\Scripts;C:\Python34;C:\Users\saly\AppData\Local\Google\Cloud SDK\google-cloud-sdk\bin;C:\Users\saly\AppData\Local\atom\bin;C:\Users\saly\AppData\Roaming\npm]

Вот мой код (я удалил ключи):

import csv
import twitter
api = twitter.Api(
    consumer_key = '',
    consumer_secret ='',
    access_token_key = '',
    access_token_secret = '')

hashtags_to_track = [
    "#TheHighlanderWasAGreatMovie",
]

stream = api.GetStreamFilter(track=hashtags_to_track)

with open('tweets.csv', 'w+') as csv_file:
    csv_writer = csv.writer(csv_file)
    for line in stream:
        # Signal that the line represents a tweet
        if 'in_reply_to_status_id' in line:
            tweet = twitter.Status.NewFromJsonDict(line)
            print(tweet.id)
            row = [tweet.id, tweet.user.screen_name, tweet.text]
            csv_writer.writerow(row)

Наконец, я хочу экспортировать данные с помощью модуля csv. Если я делаю это неправильно или что-то явно не так, не могли бы вы направить меня к нужному ресурсу? Также очень приветствуются любые советы по «отладке». Я использую Sublime после того, как у меня возникли проблемы с использованием пакета 'script' на Atom для запуска моего кода.

Если кто-нибудь из вас знает лучший ресурс / руководство для того, что я пытаюсь сделать, пожалуйста, дайте мне знать! :)

Спасибо!

Обновлено: опечатки

Руководство, которым вы пользуетесь, ошибочно утверждает, что in_reply_to_status_id необходим для присутствия твита. Используйте id или user. Кроме того, текст твита может быть на tweet.text или tweet.full_text, поэтому проверьте оба варианта.

Jonas 15.05.2018 14:18

Когда я изменил in_reply_to_status_id на id и попытался запустить код - ничего не произошло. Ошибок нет. Когда я сделал это снова, возникла эта ошибка: twitter.error.TwitterError: {'message': 'Превышен лимит подключения для пользователя'} ----- любая помощь приветствуется. Как вы, наверное, уже знаете, я все еще учусь здесь, поэтому все, что может быть вам очевидно, может быть не для меня. Огромное спасибо.

burritosamaa 17.05.2018 19:52
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
249
0

Другие вопросы по теме